2014-03-05 45 views
0

我在JFreeChart 1.0.17中创建了一个XYSeries,如下所示,并动态构建一个图表。添加的x,y数据可以是任意数量级,但是当x和y值非常小时(小于等于1e-5)时,自动调整量计算看起来不起作用,并且生成的图将只是一个水平线。在这种情况下,将所有数据乘以系数10,000,然后将它们添加到系列中会得出正确的图。数据被添加为双倍数据,并且我在调试器中查看了XYSeries对象,以确保正确的值在那里结束。我错过了什么吗?有什么方法可以帮助自动量程计算做正确的事情吗?XYSeries自动调整精度损失?

series = new XYSeries("Heartbeat"); 
final XYSeriesCollection data = new XYSeriesCollection(series); 
chart = ChartFactory.createXYLineChart("", "", "", data, PlotOrientation.VERTICAL, false, true, false); 
final XYPlot plot = chart.getXYPlot(); 
ValueAxis domain = plot.getDomainAxis(); 
domain.setAutoRange(true); 
((NumberAxis) domain).setAutoRangeIncludesZero(false); 
ValueAxis range = plot.getRangeAxis(); 
range.setAutoRange(true); 
((NumberAxis) range).setAutoRangeIncludesZero(false); 

回答

2

类ValueAxis具有autoRangeMinimumSize属性默认为0.00000001。当范围自动计算时,轴不会让它低于这个尺寸。它适用于所有数据值相同的情况,在这种情况下,它决定了轴的长度。但是,正如你发现的那样,如果你所有的数据值都小于0.00000001,就会引起问题,所以你应该将它设置为低一些,而不是使用默认值。

+0

完美地工作,谢谢! –