切换 JFreeChart 轴范围的上限

Posted

技术标签:

【中文标题】切换 JFreeChart 轴范围的上限【英文标题】:Toggle upper bound of JFreeChart axis range 【发布时间】:2011-11-22 16:21:10 【问题描述】:

我有一个图表,显示完成的任务数量与时间的关系。在 Y 轴上,始终包含 0,并且有一个固定值,即最大任务数。随着时间的推移,该系列的线攀升至最大值。这一切我都能做到。

我想要做的是允许用户在 Y 轴从 0 到 MAX 和 0 到自动范围值之间切换。这样,它们可以仅放大数据,而当它们仍远离最大值时,图表的上半部分不会为空。

JFreeChart chart = ChartFactory.createTimeSeriesChart("", "", "Progress", dataset, false, true, false);
XYPlot plot = chart.getXYPlot();
plot.getRangeAxis().setRange(new Range(0, TOTAL), false, true);

该行允许我显示整个值范围,但我无法将范围恢复为自动值,该值将上限设置为略高于系列中的最大值(它的呈现方式如果您根本不设置范围)。

【问题讨论】:

【参考方案1】:

作为权宜之计,您可以保留默认的Range

Range auto = plot.getRangeAxis().getRange();

稍后恢复它:

this.add(new JButton(new AbstractAction("Restore") 

    @Override
    public void actionPerformed(ActionEvent e) 
        JFreeChart chart = chartPanel.getChart();
        XYPlot plot = (XYPlot) chart.getPlot();
        plot.getRangeAxis().setRange(auto);
    
), BorderLayout.SOUTH);

基于org.jfree.chart.demo.TimeSeriesChartDemo1的概念示例。

【讨论】:

我同意这可能不是“正确”的答案,但是每当我刷新数据时存储一个范围的实例确实可以让我重新设置范围。 我喜欢保留原件的方便,但你也可以construct one类似于工厂创建的。

以上是关于切换 JFreeChart 轴范围的上限的主要内容,如果未能解决你的问题,请参考以下文章

用java写有关JFreeChart乱码的问题

Java-JFreeChart示例

JAVA Swing使用JFreeChart实现折线图绘制

更改 jfreechart 的域轴标签和范围轴标签的字体大小

Java 报表之JFreeChart(第二讲)

JFreeChart画折线图