【发布时间】:2016-07-07 18:03:23
【问题描述】:
我想将数据表示为盒须图,并为此设置了一个类别图。但是,此外,我想添加一个折线图,显示每个数据点的平均值的累积。
现在我的代码是这样的
DefaultBoxAndWhiskerCategoryDataset dataSet = new DefaultBoxAndWhiskerCategoryDataset();
int i = 0;
for (List<Integer> categoryList : categoryLists) {
dataSet.add(categoryList, i, "BoxAndWhiskers");
i++;
}
BoxAndWhiskerRenderer renderer = new BoxAndWhiskerRenderer();
double sum = 0;
i = 0;
DefaultCategoryDataset averageDataSet = new DefaultCategoryDataset();
for (double average : averages) {
sum += average;
averageDataSet.add(sum, i, "Average");
i++;
}
LineAndShapeRenderer lineAndShapeRenderer = new LineAndShapeRenderer();
CategoryAxis xAxis = new CategoryAxis("Type");
NumberAxis yAxis = new NumberAxis("Value");
CategoryPlot plot = new CategoryPlot(dataSet, xAxis, yAxis, renderer);
plot.setDataset(1, averageDataSet);
plot.setRenderer(1, lineAndShapeRenderer);
JFreeChart chart = new JFreeChart(
"Box-and-Whisker",
new Font("SansSerif", Font.BOLD, 14),
plot,
true
);
BufferedImage outputImage = chart.createBufferedImage(800, 600);
ImageIO.write(outputImage, "png", new File("output.png"));
但是,当我查看 output.png 时,我只看到框和胡须渲染(没有线形图)。
要在输出图像中同时使用渲染器和数据集,我还需要做些什么吗?此外,是否有更好的方法来获得箱须图中平均值的累积线?
【问题讨论】:
-
单独绘制
averageDataSet会发生什么? -
再次查看输出后,它显示为一组垂直点出现在我的图表中心。这两个数据集将具有相同的密钥,所以我想我正在尝试弄清楚如何将点放在盒子顶部并正确放置胡须点
-
尝试比较两个数据集
add()调用中的rowKey和columnKey。 -
两个数据集的行相同,但列不同。如果我希望它们正确叠加,它们是否需要相同?
-
我记得,每个
rowKey都是一个系列,每个columnKey都是系列中的一个元素,对于example。
标签: java jfreechart