时间序列数据的等轴x轴刻度

时间:2018-05-18 08:41:15

标签: python nvd3.js python-nvd3

我有一个时间序列数据,我试图用nvd3构建一个stackedAreaChart。系列看起来像这样:

xdata = ['2017-11-17', '2017-12-17', '2018-01-17', '2018-02-17', '2018-03-17', '2018-04-17']
ydata = [7277L, 9579L, 6291L, 6715L, 8743L, 9879L]

我将xdata中的日期转换为unix格式,它就像这样:

xdata = [1510873200000L,
   1513465200000L,
   1516143600000L,
   1518822000000L,
   1521241200000L,
   1523916000000L]

然后我创建一个图表:

chart = stackedAreaChart(name='stackedAreaChart', 
                             height=400, 
                             width=400 
                             ,x_is_date=True
                            )
chart.add_serie(name = 'Chart1', y = ydata, x = xdata )

问题是我希望所有xdata在x轴上显示为刻度,或者至少在更多数据的情况下自定义它。 我得到的输出如下图所示。

如您所见,日期不均匀显示。我希望2017年11月17日,2017年12月17日,2018年1月17日......

我之前没有和js合作过,但我尝试的一切都很不幸。我试图添加额外的系列来改变x轴格式,但问题是我们在构建绘图并添加效果后添加了额外的系列。

2 个答案:

答案 0 :(得分:0)

我的猜测是,可靠地解决这个问题的唯一方法是确保所有数据集的长度相等,并且它们都以完全相同的x轴值开始和结束,如果是x-轴值在其中一个数据集中定义,它也在所有其他数据集中定义,并且数据集全部通过增加x轴值排序。

由于我是nvd3的业余爱好者,很可能不需要这种程度的一致性,但它可能不会让你的问题更糟。

答案 1 :(得分:0)

所以here was posted the same problem.

方法是将x轴的tickValues分配给xdata。 这是我写的解决方案:

datum

chart.htmlcontent是在python-nvd3的输出中的js脚本中生成的数据变量

在我搜索tickValues的文档之前,但是没有记录分配import ROOT as R input_file = R.TFile('inputs/___my_file_name___.root') tree = input_file.Get('r') tree.Draw('hy>>hh(10,0,5)') R.gPad.Close() R.hy # shows that hy is still available. It can even be redrawn at this stage. tree.Draw('hy>>hh(3,0,3)') # overwrites the C++ object in ROOT's namespace R.hy # shows that R.hy is None, since the C++ object it pointed to is gone del R.hy R.hy # now finds the new C++ object ,所以我必须使用javascript手动完成。我希望这有助于某人。