JFree图表选择性点厚度

时间:2011-12-26 11:07:44

标签: java jfreechart

我正在使用jfree图表以图形方式显示指标。现在我正在研究一种解决方案,它将XY线图中的图形元素随机化,以使图形看起来更平滑。问题是我不希望随机元素获得相同的厚度作为真正的值,实际上我不会有任何与它们相关的厚度。有没有办法有选择地指定点厚度。我目前正在使用XYLineAndShapeRenderer渲染点厚度。

1 个答案:

答案 0 :(得分:4)

您可以覆盖getItemShapeVisible()并安排它为虚假点返回false。您可以使用XYZDataset

的实现将决策所需的额外信息存储在数据模型中

作为替代方案,请在呈现之前考虑smoothing数据。此类过滤器通常会导致更少的点,从而简化了渲染。

在任何一种情况下,都要避免混淆或误导数据的变化。显示TextTitlehere可以澄清结果。

附录:getItemShapeVisible()告诉正在考虑seriesitem。默认实现只询问getSeriesShapesVisible()。这是一个大纲:

private static class MyRenderer extends XYLineAndShapeRenderer {

    @Override
    public boolean getItemShapeVisible(int series, int item) {
        System.out.println(series + ":" + item);
        if (item % 2 == 0) return false;
        else return super.getItemShapeVisible(series, item);
    }
}

附录:以下是您安装它的方法:

XYPlot plot = chart.getXYPlot();
MyRenderer renderer = new MyRenderer();
plot.setRenderer(renderer);