【问题标题】:How to create shapes on a JFreeChart line chart?如何在 JFreeChart 折线图上创建形状?
【发布时间】:2017-03-30 13:45:20
【问题描述】:

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

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

我已按照here 的描述进行操作,但是它们并没有出现在我面前。这是我的 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,它也没有任何区别。

我做错了什么?

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    来自 JFreechart 1.5.0

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

    【讨论】:

      【解决方案2】:

      给定对渲染器的引用,

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

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

      renderer.setBaseShapesVisible(true);
      

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

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

      【讨论】:

      • 感谢您的回答!唉,这没有帮助。我尝试了setBaseSeriesVisible(true),然后还为我的所有系列尝试了setSeriesVisible。我尝试使用setBaseShapesetSeriesShape 为所有系列设置形状。我尝试了不同的形状,大尺寸的,以防它们太小我看不到它们。还是一样的输出。还有什么我可以尝试的吗?或者你有一个完整的示例工作程序的链接,然后我可以与我的程序进行比较。提前致谢!
      • 如果您希望 shapes 可见,请尝试 setBaseShapesVisible(true)sample charts 中的 LineChartDemo[1235] 示例可能会有所帮助。因为有很多组合,请编辑您的问题以包含一个minimal reproducible example,该minimal reproducible example 专注于孤立的任何剩余问题。
      • 对不起,我的错误,我混淆了这两种方法(setBaseSeriesVisiblesetBaseShapesVisible),现在可以了,非常感谢您的帮助!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多