当前位置: 首页 > 面试题库 >

JFreeChart图例显示

魏誉
2023-03-14
问题内容

在我的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);

一旦完成,图例就会恢复为一行。有什么办法解决吗?

我采用的解决方案接近于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;
    }
}


 类似资料:
  • 在我的Spring web MVC应用程序中,我计划在我的jsp视图上显示一些JFree图表,我不知道如何做到这一点,因为我的第一个想法对我不起作用,生成一个图像,然后从文件夹中检索它。 现在我想,控制器能够直接回放图像吗?假设这是我的服务接口: 我可以做这样的事情吗?我如何从我的jsp调用这个映像?

  • 主要内容:什么是JFreeChart 饼图,JFreeChart 饼图的示例什么是JFreeChart 饼图 饼图是一个圆形图,它被分成多个扇区,其中每个扇区的面积代表数据的大小。 下图显示了 JFreeChart 库中包含的饼图的一些演示版本: JFreeChart 饼图的示例 让我们以学生的考试分数分布作为样本数据。 成绩范围 学生人数 80-100 120 60-79 80 40-59 20 20-39 7 0-19 3 以下代码根据上述示例数据创建饼图:  输出结

  • 我是ChartJS的新手,我对这个传说有一些问题。我有一个简单的条形图,只有3条像: 但我显示的图表是空的:(我还尝试通过在画布下方添加另一个div来显示图例,并通过以下方式调用它: 同样的结果是:( 我做错了什么?

  • Highcharts 饼图 以下实例演示了显示图例饼图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 series 配置 设置 series 的 type 属性为 pie ,series.type 描述了数据列类型。默认值为 "line"。 var series = { type: 'pie' }; plotOptions plo

  • 我的目标是用JFreeChart XY散点图显示一些数据,以便在按下jButton时显示该散点图,并且还可以单击该散点图上的数据点并查看有关它们的一些附加信息。在按下jButton之后,从外部数据文件导入数据点,并创建散点图。绘图按预期工作,但情节对鼠标单击没有反应。 我试图在包含散点图的图表面板中添加一个ChartMouseListener,但它似乎没有注册鼠标单击,或者对单击没有反应。 这是代

  • 我一直在为一个即将到来的项目使用JFreeChart进行实验,看着教程,它们似乎非常直截了当。我创建了一个简单的小程序,它要求一些数据并显示一个3D饼图。它可以工作,但当在面板中显示图表时,它只显示部分图表。如果单击面板内部,它将增长到显示面板的大小。我尝试在不同的地方设置不同的setPreferredSize(),但似乎都不起作用。我错过了什么?