gpt4 book ai didi

java - JFreeChart 图例显示

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:28 25 4
gpt4 key购买 nike

在我的 JFreeChart 时间序列图中,我发现图例线太细而无法准确看到颜色。另一篇文章 [ https://stackoverflow.com/questions/7306901/jfreechart-change-sample-of-colors-in-legend ]建议按如下方式覆盖渲染器方法:

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());
}
};

最佳答案

您将不得不覆盖 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;
}
}

关于java - JFreeChart 图例显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12222557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com