2016-04-07 36 views
0
I x-ekseni üzerinde birden fazla tarih görüntülüyor bu basit d3.js tek çizgi grafik sahip

göstermek için:kullanımı d3.js tek çizgi grafik aynı fakat farklı sıcaklıklar

<script> 

// Parse the date/time 
var parseDate = d3.time.format("%d-%b-%y").parse; 

// Set the ranges 
var x = d3.time.scale().range([0, width]); 
var y = d3.scale.linear().range([height, 0]); 

// Define the axes 
var xAxis = d3.svg.axis().scale(x) 
.orient("bottom"); 

var yAxis = d3.svg.axis().scale(y) 
.orient("left").ticks(5); 

// Define the line 
var valueline = d3.svg.line() 
.x(function(d) { return x(d.date); }) 
.y(function(d) { return y(d.close); }); 

// Adds the svg canvas 
var svg = d3.select("#air_temp_chart") 
.append("svg") 
    .attr("width", width + margin.left + margin.right) 
    .attr("height", height + margin.top + margin.bottom) 
.append("g") 
    .attr("transform", 
      "translate(" + margin.left + "," + margin.top + ")"); 

// Get the data 
d3.csv("data.csv", function(error, data) { 
data.forEach(function(d) { 
    d.date = parseDate(d.date); 
    d.close = +d.close; 
}); 

var tickValues = data.map(function(d) { return d.date; }); 

xAxis 
.tickValues(tickValues) 
.tickFormat(d3.time.format('%H:%M')); 

// Scale the range of the data 
x.domain(d3.extent(data, function(d) { return d.date; })); 
y.domain([0, d3.max(data, function(d) { return d.close; })]); 

// Add the valueline path. 
svg.append("path") 
    .attr("class", "line") 
    .attr("d", valueline(data)); 

// Add the X Axis 
svg.append("g") 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis); 

// Add the Y Axis 
svg.append("g") 
    .attr("class", "y axis") 
    .call(yAxis); 

});

data.csv: tarih hepsi için aynıdır, ama zaman ve sıcaklık okumaları farklı değerlerdir böylece verileri değiştirmek istiyorum

date,close 
1-May-12,58.13 
30-Apr-12,53.98 
27-Apr-12,67.00 

. Bunu yaparken okumalar kez, ancak grafik sonları dahil

var parseDate = d3.time.format("%d-%b-%y %H").parse; 

:

I time.format çizgi değişti.

ben aynı tarihte ancak farklı zamanlarda ve sıcaklık okumaları ile bu verileri kullanmak istiyorum:

1-May-12 06:00,58.13 
1-May-12 06:30,53.98 
1-May-12 07:00,67.00 

nasıl yukarıdaki değerlerle çalışmaya x ekseni kodunu değiştirmek?

cevap

1

d3 grafiğinde görüntülenecek belirli onay değerlerini sağlayabilirsiniz.

Öncelikle, tarih ayrıştırıcı düzeltin:

var parseDate = d3.time.format("%e-%b-%y %H:%M").parse; // %e instead of %d 

İlk olarak, görüntülemek istediğiniz kene değerlerinin listesini almak gerekiyor. Eğer csv yüklenir ve işledikten sonra, kene değerlerini çıkarmak ve sizin xAxis atamak:

d3.csv("data.csv", function(error, data) { 
    data.forEach(function(d) { 
     d.date = parseDate(d.date); 
     d.close = +d.close; 
    }); 
    var tickValues = data.map(function(d) { return d.date; }); 

    xAxis 
     .tickValues(tickValues) 
     .tickFormat(d3.time.format('%H:%M')); 

mevcut xAxis tanımına ticks kaldırmak unutmayın.

+0

Teşekkür ederiz! Kodumu önerilerinizi yansıtacak şekilde güncellemenizi isteyebilir miyim? TickValues ​​satırının nereye yerleştirileceği konusunda kafam karıştı ve eski xAxis değişken bildirimini sağladığınızla mı değiştirdim? Tekrar teşekkürler! – cpcdev

+0

@cpcdev Daha spesifik olmak için cevabımı düzenledim. kod satır – iulian

+0

satırına gidiyor teşekkür ederim! Var tickValues ​​çizgisini doğru yerleştirdim ama xAxis hala sorun yaşıyor. Değiştirdiğim xAxis kodunu göstermek için orijinal gönderiyi güncelledim. Burada neyi özlüyorum? – cpcdev