nvd3和d3.js Y轴渲染问题

时间:2015-09-17 23:23:18

标签: javascript jquery d3.js nvd3.js

我是NVD3库的新手。我试图使用累积折线图但无法渲染y轴。我有两个系列,输入和输出.. x显示日期,而y显示50 - 400范围的值。但是,我能够渲染xaxis但无法渲染yaxis。请帮忙。

我的代码如下。



<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>
nv.addGraph(function() {
				  var chart = nv.models.cumulativeLineChart()
				    .x(function(d) { return d.x })
				    .y(function(d) { return d.y })
				    .color(d3.scale.category10().range())
				    .useInteractiveGuideline(true);

				  chart.forceY([0]);
				  chart.xScale(d3.time.scale());
				  
				  chart.xAxis
				    .tickFormat(function(d) {
				      return d3.time.format('%x')(new Date(d));
				    });
				  
				 	var format = ',f';
      				
      				chart.yAxis
        		    .axisLabel(' ')
        		    .tickFormat(d3.format(format));

				  d3.select('#recordChartDiv svg')
				    .datum(data)
				    .transition().duration(500)
				    .call(chart);

				  nv.utils.windowResize(chart.update);
				  return chart;
				});
&#13;
&#13;
&#13;

Json data

但是我输出的输出不正确yaxis。 output with incorrect yaxis

有人可以指导我吗?

1 个答案:

答案 0 :(得分:0)

请试一试。希望它有所帮助:

var chart = nv.models.cumulativeLineChart()
                .x(function(d) { return d.x })
                .y(function(d) { return d.y })
                .color(d3.scale.category10().range())
                .useInteractiveGuideline(true)
                .forceY([50,400]);

在这种情况下,它确保您的y轴将显示50-400的值,但是如果您有超出该范围的值,则调整轴并且这些值仍将显示。但是,如果您尝试这样的事情:

chart.yAxis.scale().domain([0, maxValue]);

这将正确设置您的轴,但是如果任何值超出范围,它们将不会显示在您的图表中。

在此处查看实时代码示例:Example

尝试附加forceY([50,400]);通过制作这样的代码:

var chart = nv.models.lineChart()
.useInteractiveGuideline(true)
.forceY([50,400])
;

希望你现在清楚地知道如何继续。

编辑:: 我终于设法找出发生了什么。您的代码似乎没有任何问题。问题似乎特定于cumulativeLineChart()它的目的是成为一个用户提到的索引图。如果您想在此处详细说明,请访问:Bug

所以不确定这是否是故意这样做的。如果您只是将其更改为lineChart()而不是您的代码将正常工作。我已经更新了你的小提琴。现在看看这里:Working example