我正在JFreeChart 1.0.17中创建一个XYSeries
,如下所示,并动态构建一个图表。添加的x,y数据可以是任意大小,但是当x和y值非常小 - 1e-5或更小时 - 自动量程计算似乎不起作用,并且生成的图将只是一个水平线。在这种情况下,在将所有数据添加到系列之前将其乘以系数10,000会导致正确的绘图。数据被添加为双精度数,我在调试器中查看了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);
答案 0 :(得分:2)
ValueAxis类具有autoRangeMinimumSize属性,默认值为0.00000001。当自动计算范围时,轴不会低于此尺寸。它适用于所有数据值相同的情况,在这种情况下,它确定轴长度。但正如您所发现的,如果您的所有数据值都小于0.00000001,则会导致问题,因此您应将其设置为较低的值,而不是使用默认值。