JFreeChart - 更改图例中颜色示例

4
请问有人可以告诉我如何在jfreechart的图例中更改系列颜色样本?目前我所拥有的是系列颜色的小线条,例如:
Example
我希望能够有这些颜色的正方形样本。以下是一个示例
Example 请问有人可以帮助我吗?
好的,我找到了解决方案。至少我认为是这样。当然,要做到这一点并不简单。实际上,我还没有发现setShape(square)方法之类的简单方法。
基本上,XY图表和时序图表默认情况下具有“线型”图例,与柱状图相比(如果默认具有正方形图例)。因此,我必须删除当前的图例,并创建一个带有彩色正方形样本的新图例,将此新图例添加到我的时间图表中。
LegendItemCollection legend = new LegendItemCollection();    
for (int i = 0; i < seriecCount; ++i) {
    chart.getXYPlot().getRenderer().setSeriesPaint(i, colorPalette.get(i));
    LegendItem li = new LegendItem(data.getSeriesName(i), "-", null, null, Plot.DEFAULT_LEGEND_ITEM_BOX, colorPalette.get(i));
    legend.add(li);
}  
chart.getXYPlot().setFixedLegendItems(legend);

感谢关注。我希望这能帮助到某些人。

请提供一个 sscce,展示您当前的结果。 - trashgod
2个回答

3
生成自己的图例,就像您上面所做的那样,在JFreeChart中是完全可接受的方法。如果您不想这样做,您也可以使用lookupLegendShape()方法重写定义自己的渲染器。
thePlot.setRenderer(new XYLineAndShapeRenderer()
      {
         public Shape lookupLegendShape(int series)
         {
            return new Rectangle(15, 15);
         }
      });

0

如果你使用 XYBarRenderer 类 XYBarRenderer

(子类:ClusteredXYBarRenderer,StackedXYBarRenderer)

你可以使用 XYBarRenderer.setLegendBar(java.awt.Shape bar);
参见:Javadoc
来得到漂亮的正方形。

例子:

JFreeChart chart = ChartFactory.createXYBarChart(/*...*/);

XYPlot plot = (XYPlot) chart.getPlot();

ClusteredXYBarRenderer renderer = new ClusteredXYBarRenderer();
renderer.setLegendBar(new Rectangle(17, 17));

plot.setRenderer(renderer);

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