2011-09-05 599 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);