JFreeChart:减少时间轴时如何缩放Y轴?

时间:2019-07-14 07:10:19

标签: java scale jfreechart yaxis

我已经在JFreeChart中创建了一个由TimeSeriesCollectionXYPlot组成的图。水平轴使用DateAxis,垂直(Y)轴使用NumberAxis。如果水平轴使用的是我拥有数据点的所有日期,那么在使用时,我会得到适当的Y轴刻度:

Y1axis.setAutoRangeIncludesZero(false);
Y1axis.setRangeWithMargins(LeftSeries.getRangeBounds(true));

现在,我只想从可用时间数据的一部分中创建一个绘图。例如:我有涵盖四年的数据点,但只想创建第二年的图。为此,我创建了一个日期范围(MinDate是我想显示的最早的数据点,MaxDate是我想显示的最新的数据点):

dateAxis.setMinimumDate(MinDate);
dateAxis.setMaximumDate(MaxDate);

这将根据需要缩放水平轴。但是,如果我现在使用相同的代码缩放Y轴(Y1axis.setRangeWithMargins(LeftSeries.getRangeBounds(true))),则会得到整个垂直范围,适用于整个数据集。我想要的是适合日期范围MinDateMaxDate的垂直刻度。 我已经尝试了一些方法来使垂直轴正确缩放,但是我的尝试均无济于事。例如:

double LowValue = Y1axis.getLowerBound();
double HighValue = Y1axis.getUpperBound();
Y1axis.setRange(LowValue, HighValue);

不起作用。 我应该使用什么代码来调整垂直(Y)轴上的比例以使其适应图中显示的水平时间轴数据点?

1 个答案:

答案 0 :(得分:1)

您只需要为Y1axis轴启用自动范围

Y1axis.setAutoRangeIncludesZero(false);
Y1axis.setAutoRange(true);

示例:

所有数据:

enter image description here

具有自动范围已禁用的值的子集:

enter image description here

启用了自动范围 的值的子集:

enter image description here