如何在JFreeChart折线图上创建形状?

3

我想在使用ChartFactory.createLineChart()创建的折线图上有标记数据点的形状(小正方形)。

它应该看起来像这样(此图片不是用JFreeChart创建的):

带正方形标记的折线图

我按照这里的说明进行了操作,但它们对我没有显示。这是我的JFreeChart软件输出的结果:

输入图像描述

我的代码如下:

JFreeChart lineChart = ChartFactory.createLineChart(...);
CategoryPlot plot = (CategoryPlot) lineChart.getPlot();
plot.getRenderer().setBaseShape(
    new Rectangle2D.Double(-20.0, -20.0, 40.0, 40.0));

我也尝试过在我绘制的所有系列中使用setSeriesShape而不是setBaseShape,但它并没有产生任何区别。我做错了什么吗?
2个回答

4

给定一个渲染器的引用,

LineAndShapeRenderer renderer = (LineAndShapeRenderer) plot.getRenderer();

调用setBaseShapesVisible()可以启用您选择的DrawingSupplier提供的形状。

renderer.setBaseShapesVisible(true);

要改变外观,可以将自定义Shape传递给所需系列的setSeriesShape()

image 1

renderer.setSeriesShape(0, new Ellipse2D.Double(-3d, -3d, 6d, 6d));

image 2


谢谢您的回答!不幸的是,这并没有帮助我。我尝试使用setBaseSeriesVisible(true),然后也尝试对所有系列使用setSeriesVisible。我尝试为所有系列设置形状,包括setBaseShapesetSeriesShape。我尝试了不同的形状,使用大尺寸来确保它们不会太小而看不见。但输出结果仍然相同。还有其他我可以尝试的吗?或者您有一个完整的示例程序链接,可以实现此功能,那我就可以与我的程序进行比较。提前感谢您! - Adrian Smith
由于您希望“形状”可见,请尝试使用setBaseShapesVisible(true)。来自示例图表LineChartDemo [1235]示例可能会有所帮助。由于组合太多,因此请编辑您的问题以包含一个[mcve],以便将任何剩余问题隔离开来。 - trashgod
1
抱歉,我的错误,我混淆了两种方法(setBaseSeriesVisiblesetBaseShapesVisible),现在它可以工作了,非常感谢您的帮助! - Adrian Smith

1

来自JFreechart 1.5.0

LineAndShapeRenderer renderer = (LineAndShapeRenderer) lineChart.getCategoryPlot().getRenderer();
renderer.setDefaultShapesVisible(true);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接