有没有办法将JFreechart图表缩放到X轴上的某个值?

2022-08-18 00:00:00 java jfreechart swing

我有一堆图表,我想将它们全部缩放,以基于不是源自图表内部的事件突出显示值x+范围内的系列。

如果我没看错的话,所有的缩放图表方法,如chart::zoomInDomain都采用屏幕坐标。因此,我正在寻找一种方法,可以将x域值转换为图表中的屏幕坐标,或者找到另一种基于序列值进行缩放的方法。


解决方案

一种方法是调整相关轴以位于所需范围的两侧。确切的表述将取决于您的数据和目标。作为一个具体的例子,从here开始,下面对createChart()的更改生成了下面的图表。它放大到序列中最后一天的值,两侧是域轴上的两天和范围轴上的比例数量:

int n = dataset.getItemCount(0);
double dMin = dataset.getX(0, n - 3).doubleValue();
double dMax = dataset.getX(0, n - 1).doubleValue();
domain.setRange(dMin, 2 * dMax - dMin);
ValueAxis range = plot.getRangeAxis();
double rMin = dataset.getY(0, n - 3).doubleValue();
double rMax = dataset.getY(0, n - 1).doubleValue();
range.setRange(rMin, 2 * rMax - rMin);

另请参阅相关答案here、here和here。

相关文章