2011-09-05 31 views
4

有人能告诉我如何在jfreechart中更改图例中的系列颜色样本。我现在拥有的是系列颜色的小线条,例如:
Example
我想要这些颜色的方形样品。这里是一个例子
Examplejfreechart - 更改图例中的颜色示例

有人可以帮助我吗?

好的,我找到了解决方案。至少我想。当然,没有简单的方法来做到这一点。现在,你知道,setShape(方形)方法,这将做到这一点,至少我没有找到一个。

基本上,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); 

感谢您的关注。我希望它能帮助别人。

+0

请提供[SSCCE](http://sscce.org/),它显示当前的结果。 – trashgod

回答

3

生成自己的图例,如上所述,是在JFreeChart中完成的一种完全可以接受的方式。如果你不想这样做,你也可以使用lookupLegendShape()方法重写定义你自己的渲染器。

thePlot.setRenderer(new XYLineAndShapeRenderer() 
     { 
     public Shape lookupLegendShape(int series) 
     { 
      return new Rectangle(15, 15); 
     } 
     }); 
0

如果使用XYBarRenderer Class XYBarRenderer

(子类:ClusteredXYBarRenderer,StackedXYBarRenderer)

您可以使用XYBarRenderer.setLegendBar(java.awt.Shape中条);
See: Javadoc
得到很好的正方形。

实施例:

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

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

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

plot.setRenderer(renderer); 
相关问题