在我的JFreeChart时间序列图我找到传说线薄准确地看到的颜色。另一篇文章[jfreechart - change sample of colors in legend] 建议重写渲染方法如下:JFreeChart的传说显示
renderer = new XYLineAndShapeRenderer()
{
private static final long serialVersionUID = 1L;
public Shape lookupLegendShape(int series)
{
return new Rectangle(15, 15);
}
};
这种方法工作得很好,直到你做什么我做
renderer.setSeriesShapesVisible(i, false);
一旦我做到了传说恢复为一条线。这有什么办法吗?
我采用的解决方案接近于TrashGod建议的解决方案我覆盖了getLegendItem()方法,强制图例形状到所需的方框。
renderer = new XYLineAndShapeRenderer()
{
private static final long serialVersionUID = 1L;
public LegendItem getLegendItem(int datasetIndex, int series)
{
LegendItem legend = super.getLegendItem(datasetIndex, series);
return new LegendItem(legend.getLabel(), legend.getDescription(), legend.getToolTipText(), legend.getURLText(), Plot.DEFAULT_LEGEND_ITEM_BOX, legend.getFillPaint());
}
};
我可能在这里有点慢,但你能给我一个线索如何做到这一点?我很乐意简单地用Plot.DEFAULT_LEGEND_ITEM_BOX替换图例图形,但我不确定如何保持图例信息的其余部分与原始图形一致。我是否只需获取所有属性并将它们设置为新的图例? –
@RichardB:我已经概述了上面的方法。 – trashgod
谢谢。我稍微修改了您的方法(请参阅上文) –