简体   繁体   English

JFree图表选择性点厚度

[英]JFree chart selective point thickness

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

You can override getItemShapeVisible() and arrange for it to return false for the spurious points. 您可以覆盖getItemShapeVisible()并安排它为虚假点返回false You can store the extra information required for the decision in your data model using an implementation of XYZDataset . 您可以使用XYZDataset的实现将决策所需的额外信息存储在数据模型中。

As an alternative, consider smoothing the data before rendering it. 作为替代方案,请考虑在渲染数据之前平滑数据。 Such filters typically result in fewer points, which simplifies rendering. 这样的滤波器通常导致更少的点,这简化了渲染。

In either case, avoid confusing or misleading changes to the data. 在任何一种情况下,都要避免混淆或误导数据的变化。 A TextTitle , shown here , may clarify the result. 此处显示的TextTitle可以澄清结果。

Addendum: getItemShapeVisible() tells you what series and item is under consideration. 附录: getItemShapeVisible()告诉正在考虑的seriesitem The default implementation simply asks getSeriesShapesVisible() . 默认实现只是询问getSeriesShapesVisible() Here's an outline: 这是一个大纲:

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

Addendum: Here's how you might install it: 附录:以下是您可以安装它的方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM