1.环境介绍
<dependency>
<groupId>org.jfree</groupId>
<artifactId>jfreechart</artifactId>
<version>1.5.3</version>
</dependency>
- 自定义Renderer
public class CustomBarRenderer extends org.jfree.chart.renderer.category.BarRenderer
- 重写getLegendItem方法
public LegendItem getLegendItem(int datasetIndex, int series) {
CategoryPlot p = this.getPlot();
if (p == null) {
return null;
} else if (this.isSeriesVisible(series) && this.isSeriesVisibleInLegend(series)) {
CategoryDataset dataset = p.getDataset(datasetIndex);
String label = this.getLegendItemLabelGenerator().generateLabel(dataset, series);
String toolTipText = "";
String urlText = "";
Shape shape = new Rectangle(20,6);
Paint paint = colors[0];
Paint outlinePaint = this.lookupSeriesOutlinePaint(series);
Stroke outlineStroke = this.lookupSeriesOutlineStroke(series);
LegendItem item = new LegendItem(label, label, toolTipText, urlText, shape, paint, outlineStroke, outlinePaint);
item.setLabelFont(this.lookupLegendTextFont(series));
Paint labelPaint = this.lookupLegendTextPaint(series);
if (labelPaint != null) {
item.setLabelPaint(labelPaint);
}
item.setSeriesKey(dataset.getRowKey(series));
item.setSeriesIndex(series);
item.setDataset(dataset);
item.setDatasetIndex(datasetIndex);
return item;
} else {
return null;
}
}
shape和paint是对图例的形状和颜色进行自定义修改,其它可自己根据需求更改
- 自定义图例的数据源
//图例设置
{
chart.removeLegend();
LegendItemSource[] sources = new LegendItemSource[2];
sources[0] = plot.getRenderer(1);
sources[1] = plot.getRenderer(2);
LegendTitle legendTitle = new LegendTitle(null);
legendTitle.setSources(sources);
chart.addLegend(legendTitle);
}