2013-03-26 24 views
6

ben bu sayfadaki d3 crossfilter kitaplığı kullanıyorum: İkinci grafikte bakarsakÖzel x ekseni etiketlerini d3 çubuk grafiklerinde ayarlayın?

http://jovansfreelance.com/bikestats/d3/crossfilter.php

, sen x ekseni etiketleri vardır göreceksiniz 0.0, 0.5, 1.0, ... , 6.0. Haftanın günleri olmak için bu etiketlere ihtiyacım var, bu yüzden 0.0 Pazartesi olurdu, 0.5 hiç orada olmamalı ve neden veride sadece tam sayı olduğu için neden göründüğümü bilmiyorum, 1.0 Salı olmalıdır.

Bunu nasıl başaracağımı söyleyen var mı? Tüm 4 grafiğin aynı işlevi çağırabildiğini ve sadece bu grafik için etiketleri değiştirmem gerektiğini (hard-coding fine).

cevap

19

Sıralı ölçekleri kontrol etmelisiniz.

D3 v4 olarak
var xAxis = d3.svg.axis() 
    .scale(x) 
    .orient("bottom") 
    .tickFormat(formatDay); 
0

aşağıdaki şekilde dışarı çalıştı: örneğin Sonra

var weekdays = ["Mon","Tues","Wed","Thurs","Fri","Sat","Sun"]; 
var formatDay = function(d) { 
    return weekdays[d % 7] + "day";  
} 

sadece ölçeğine geçmek: Bu arada, oldukça kolay kendi tickFormat yapabilirsiniz

var data = ["Mon","Tues","Wed","Thurs","Fri","Sat","Sun"] 
var xScaleLabels = d3 
    .scalePoint() 
    .domain(data) 
    .rangeRound([50, width - 50]); // In pixels 

var axisTop2 = d3 
    .axisBottom() 
    .scale(xScaleLabels) 
    .ticks(data.length); 

svg 
    .append("g") 
    .call(axisTop2) 
    .attr("transform", "translate(" + margin.left + "," + height + ")"); 
İlgili konular