JFreeChart:如何在时间轴缩小时缩放 Y 轴?
JFreeChart: how to scale Y-axis when time axis is reduced?
我在 JFreeChart 中创建了一个绘图,由 TimeSeriesCollection
和 XYPlot
组成。水平轴使用 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))
),我将获得适用于整个数据集的整个垂直范围。我想要的是适合日期范围 MinDate
~MaxDate
的垂直刻度。
我已经尝试了一些方法来使垂直轴正确缩放,但我的 none 尝试没有任何效果。例如:
double LowValue = Y1axis.getLowerBound();
double HighValue = Y1axis.getUpperBound();
Y1axis.setRange(LowValue, HighValue);
没用。
我应该使用什么代码来调整垂直 (Y) 轴上的比例以适应图中显示的水平时间轴数据点?
您只需为 Y1axis
轴启用 自动范围 :
Y1axis.setAutoRangeIncludesZero(false);
Y1axis.setAutoRange(true);
示例:
全部数据:
具有自动范围的值的子集禁用:
具有自动范围的值子集 启用:
我在 JFreeChart 中创建了一个绘图,由 TimeSeriesCollection
和 XYPlot
组成。水平轴使用 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))
),我将获得适用于整个数据集的整个垂直范围。我想要的是适合日期范围 MinDate
~MaxDate
的垂直刻度。
我已经尝试了一些方法来使垂直轴正确缩放,但我的 none 尝试没有任何效果。例如:
double LowValue = Y1axis.getLowerBound();
double HighValue = Y1axis.getUpperBound();
Y1axis.setRange(LowValue, HighValue);
没用。 我应该使用什么代码来调整垂直 (Y) 轴上的比例以适应图中显示的水平时间轴数据点?
您只需为 Y1axis
轴启用 自动范围 :
Y1axis.setAutoRangeIncludesZero(false);
Y1axis.setAutoRange(true);
示例:
全部数据:
具有自动范围的值的子集禁用:
具有自动范围的值子集 启用: