nvd3 python和axis

2024-04-29 13:56:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我将在python中使用nvd3来构建一个线条图。代码如下:

from nvd3 import lineChart
chart = lineChart(name="lineChart", x_is_date=True, x_axis_format="%Y")

xdata = [599644800000,694252800000,788947200000,883641600000,1167638400000,1199174400000,1230796800000,1262332800000,1357027200000]
ydata = [26.2, 22.4, 17.7, 14.8, 9.29, 8.08, 7.48, 6.96, 5.5]

extra_serie = {"tooltip": {"y_start": "There are ", "y_end": " calls"}}
chart.add_serie(y=ydata, x=xdata, name='Current Smokers ', extra=extra_serie, **kwargs1)
chart

下面是图表: enter image description here

我有三个问题:

  1. x轴有9个元素,但图表只显示其中的3个元素。如何更改代码以显示所有9个元素?在
  2. y轴元素的类型是百分比。如何将%添加到y轴?在
  3. 看起来nvd3不接受常规格式的日期,我不得不将它们转换成毫秒,这有点烦人。我怎样才能摆脱那些毫秒日期格式,而只使用1998年、1995年等等?在

Tags: 代码namefromimport元素格式chart图表
1条回答
网友
1楼 · 发布于 2024-04-29 13:56:35

我没有在Python中使用NVD3,但是我可以指出使用JavaScript库是如何实现的。以下是你问题的答案。在

  1. 默认情况下,NVD3会根据图表宽度减少图表中呈现的刻度数。在

    a)在图表X轴上显示更多刻度的一种方法是增加图表的宽度。也许不是最好的方法,但它是有效的。在

    chart = lineChart(..., width="500")。在

    b)另一种方法是定义要在图表上显示的点,并将其作为数组传递给图表。Check line 29 here。在

    chart.xAxis.tickValues(tickArr);

    请记住,刻度标签可能会重叠,这取决于图表的宽度和您试图在图表中显示的数量

  2. 当呈现时,在记号的末尾附加%。在

    chart.yAxis.tickFormat(function (d) {
        var format = d3.format(",.f");
        return format(d) + '%';
    });
    
  3. 您可以按原样传递日期e.g: 1998-02-11有关date & time parsing here的更多信息

    var format = d3.time.format("%Y-%m-%d");
    format.parse("1998-02-11"); // returns a Date
    format(new Date(1998, 02, 11)); // returns a string
    

希望这对你有帮助。在

相关问题 更多 >