使用Dimple.js添加timeAxis

时间:2014-03-05 03:53:19

标签: javascript d3.js dimple.js

我有以下dimple.js代码:

var svg = dimple.newSvg("#chart_montreal", 590, 400);
d3.csv("data/data_montreal.csv", function (data) {
data = dimple.filterData(data, "parameter", ["DCE_1_2","DCE_1_3","DCE_1_4"])
     var myChart = new dimple.chart(svg, data);
     myChart.setBounds(60, 30, 505, 305);
     var x = myChart.addTimeAxis("x", "date","%m-%d-%Y-%H%M%S","%m-%d-%y-%H%M%S");//  09-11-2007 15:15 "%m/%d/%y_%X","%m/%d/%y %X"
     console.log(x);
     //x.addOrderRule("date");
     myChart.addMeasureAxis("y", "values");
     myChart.addSeries("parameter", dimple.plot.area);
     myChart.addLegend(60, 10, 500, 20, "right");
     //myChart.setMargins("0%","0%","0%","30%");
     myChart.draw();
});

console.log(x)返回一个对象;在Chrome的检查器中,我可以将x的值读作:

  

_max:2007年9月24日星期一12:00:00 GMT-0500(中部夏令时)    proto :无效日期

     

_min:2007年9月11日星期二15:15:00 GMT-0500(中部夏令时)    proto :无效日期

csv示例:

  

参数,日期,数值,样品,

     

苯,09-11-2007-151500,150,PO1-1-110907,

     

氯苯,09-11-2007-151500,1900,PO1-1-110907,

     

DCE_1_2,09-11-2007-151500,5500,PO1-1-110907,

     

DCE_1_3,09-11-2007-151500,1000,PO1-1-110907,

     

DCE_1_4,09-11-2007-151500,3000,PO1-1-110907,

     

乙苯,09-11-2007-151500,100,PO1-1-110907,

因此,日期显示正确,时间被完全删除。

我认为这是一个错误,因为没有报告错误。

工作文件位于:http://lorefolk.com/ii/iveysoldemo/demo.html#/5

有没有人看到格式化有什么问题或知道d3中的技巧来解决这个问题?

1 个答案:

答案 0 :(得分:2)

这不是一个错误,凹坑中的时间轴显示有规律的间隔,而不是有数据的点。这里的间隔是每天,这意味着每天午夜标记。您可以使用axis.timePeriodaxis.timeInterval的组合更改间隔。因此,如果您想每隔4小时绘制一个标签x轴,它就像:

var svg = dimple.newSvg("#chart_montreal", 590, 400);
d3.csv("data/data_montreal.csv", function (data) {
    data = dimple.filterData(data, "parameter", ["DCE_1_2","DCE_1_3","DCE_1_4"])
    var myChart = new dimple.chart(svg, data);
    myChart.setBounds(60, 30, 505, 305);
    var x = myChart.addTimeAxis("x", "date","%m-%d-%Y-%H%M%S","%m-%d-%y-%H%M%S");
    x.timePeriod = d3.time.hours;
    x.timeInterval = 4;
    myChart.addMeasureAxis("y", "values");
    myChart.addSeries("parameter", dimple.plot.area);
    myChart.addLegend(60, 10, 500, 20, "right");
    myChart.draw();
});

您可以在工具提示中看到点的实际值,在您的情况下需要单击相关数据点。您还会从下拉线注意到它们不一定与轴点对齐。 N.B如果您想更容易找到数据点,请使用series.lineMarkers = true

如果你想要每个数据点的x值,你需要使用类别轴而不是时间,但是无论它们之间的时间如何,这都会均匀地分隔点,因此可能不适合你的数据。