gpt4 book ai didi

overlay - 有关 JFreeChart 叠加的帮助

转载 作者:行者123 更新时间:2023-12-02 13:50:17 26 4
gpt4 key购买 nike

我在使用 JFreeChart 重叠图时遇到问题。我正在使用 JFreeChart 1.0.13。我想要做的事情似乎在 JFreeChart 的早期版本中更容易做到?

该图显示折线图和条形图。折线图绘制的 Y 轴数据范围为 0-100 范围,条形图绘制的数据范围为 0-5 范围。

就个人而言,当我布置每个图表并绘制它时,它们看起来很棒。这是一个例子:

条形图 alt text折线图 alt text

但是当我叠加它们时,条形图会按比例缩小,看起来非常无用......大概是因为两个数据集的比例如此不同。

示例: alt text

我真正想要的是分割两个数据集的系列数据,并在左侧 Y 轴上显示折线图的 0-100 范围,并使条形图显示完整尺寸,如下面的第一个示例所示,但在图表的 Y 轴右侧显示比例 0-5。

为了创建图表,我首先使用 XYSeriesCollection 创建条形图,添加数据并创建绘图...

XYSeriesCollection histogramDataset= new XYSeriesCollection();
XYSeries xy= new XYSeries("Temp");
xy.add(100,0.0);
xy.add(101,0.3769791404875597);
histogramDataset.addSeries(xy);
...
final NumberAxis xAxis = new NumberAxis("Temperature C");
xAxis.setAutoRangeIncludesZero(false);
final ValueAxis yAxis = new NumberAxis("Percent Time above Temperature");
final XYItemRenderer renderer = new XYBarRenderer();

final XYPlot plot = new XYPlot((XYDataset) histogramDataset, xAxis, yAxis, renderer);

然后我以类似的方式创建折线图并将第二个系列添加到图中...

final XYSeries xy = new XYSeries("First");
final XYDataset xySeriesData = new XYSeriesCollection();
final XYItemRenderer xyLineRenderer = new XYLineAndShapeRenderer();
xyLineRenderer.setSeriesShape(0, new Line2D.Double(0.0, 0.0, 0.0, 0.0));
xyLineRenderer.setSeriesStroke(0, new BasicStroke(4.5f));
xy.add(100,100.0);
xy.add(101,100.0);
xyseriesData.add(xy);
plot.setDataset(1, xySeriesData);
plot.setRenderer(1, xyLineRenderer);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);

我的怀疑是,不知何故,每个图表都需要是它自己的图并组合在一起。有人可以帮忙吗?我在这里要做的是这样的: alt text

除非我不希望条形图成为背景图像。 X 轴应该相同,Y 轴应该位于右侧,并具有适当的比例,以使图表能够显示完整尺寸。

感谢任何/所有回复...

最佳答案

我看到您正在向绘图中添加第二个数据集和渲染器,但您强制它们使用相同的范围轴。相反,给情节一个新的 NumberAxis为第二个数据集的范围。

顺便说一句,不要忽视 JFreeChart Demo 中与轴相关的示例。 ,并且不要低估 JFreeChart Developer Guide 的值(value).

关于overlay - 有关 JFreeChart 叠加的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3702083/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com