2017-05-12 5 views
0

파이썬에서 nvd3을 사용하여 선 차트를 작성하려고합니다. 여기에 코드입니다 :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 등을 사용할 수 있습니까?

답변

1

저는 파이썬에서 NVD3를 사용하지 않았지만 JavaScript 라이브러리를 사용하여 어떻게 완성했는지 알려 드릴 수 있습니다. 질문에 대한 답변은 다음과 같습니다.

  1. 기본적으로 NVD3은 차트 너비를 기반으로 차트에 렌더링 된 틱의 양을 줄입니다.

    a) 차트에서 더 많은 눈금을 표시하는 한 가지 방법 XAxis는 차트의 너비를 늘리는 것입니다. 어쩌면 최선의 방법은 아니지만 작동합니다.

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

    b) 다른 방법은 차트에 표시 할 점을 정의한 다음 차트로 배열로 전달하는 것입니다. Check line 29 here.

    chart.xAxis.tickValues(tickArr);

    틱 레이블이 차트의 폭과 당신이 차트에 표시하려고하는 양에 따라 중복 수도 명심

  2. 의 끝에서 %을 추가 렌더링시 틱. 이 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 
    

희망이 도움이 당신에 e.g: 1998-02-11 더 많은 정보가 그대로

chart.yAxis.tickFormat(function (d) { 
    var format = d3.format(",.f"); 
    return format(d) + '%'; 
}); 
  • 당신은 날짜를 전달할 수 있습니다.

  • 관련 문제