繁体   English   中英

jfreechart - 更改图例中的颜色样本

[英]jfreechart - change sample of colors in legend

有人能告诉我如何在jfreechart中更改传奇中的系列颜色样本。 我现在拥有的是系列颜色的小线,例如:
例
我想要那些颜色的方形样本。 这是一个例子
例

有人能帮我吗?

好的,我找到了解决方案。 至少我认为。 当然,没有简单的方法可以做到这一点。 现在,你知道,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);

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

如上所述,生成自己的图例是在JFreeChart中完成工作的完全可接受的方式。 如果您不想这样做,您还可以使用覆盖的lookupLegendShape()方法定义自己的渲染器。

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

如果您使用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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM