JFreeChart图例显示
在我的JFreeChart时间序列图中,我发现图例线条变细以准确查看颜色。另一篇文章jfreechart-
更改图例中的颜色示例 ]建议重写渲染器方法,如下所示:
renderer = new XYLineAndShapeRenderer(){
private static final long serialVersionUID = 1L;
public Shape lookupLegendShape(int series)
{
return new Rectangle(15, 15);
}
};
这种方法行之有效,直到你做我所做的
renderer.setSeriesShapesVisible(i, false);
一旦完成,图例就会恢复为一行。有什么办法解决吗?
我覆盖了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());
}
};
回答:
您将不得不重写getLegendItem()
以获取所需LegendItem
的渲染器创建的渲染器。
附录:这是一个简单的示例,可以帮助您入门。
XYPlot plot = (XYPlot) chart.getPlot();plot.setRenderer(new MyRenderer());
...
private static class MyRenderer extends XYLineAndShapeRenderer {
@Override
public LegendItem getLegendItem(int dataset, int series) {
LegendItem legendItem = super.getLegendItem(dataset, series);
System.out.println(dataset + " " + series + " " + legendItem.getShape());
// modify legendItem here
return legendItem;
}
}
以上是 JFreeChart图例显示 的全部内容, 来源链接: utcz.com/qa/426660.html