首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何绘制部分虚线和部分实线的JFreechart?

如何绘制部分虚线和部分实线的JFreechart?
EN

Stack Overflow用户
提问于 2011-10-18 01:32:57
回答 3查看 4.7K关注 0票数 5

我将绘制一个折线图,它将从实线变为虚线,以表示真实数据和预测数据。我不确定是否需要扩展一些类,如XYLineAndShapeRenderer或其他什么,或者可能有一些方便的方法来实现这一点?

这是我使用Excel绘制的演示图。

我说的是图中的灰色线条。这就是我想要的。我不知道是否有一个渲染器可以让我指出哪个范围是虚线还是实线

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-18 02:02:59

我可以想到两种方法来做到这一点。他们都不是优雅的,但这可能是你的问题的现实。

一种是你可以定义两个碰巧相互连接的系列。这可能是您最好的选择,但您还必须修复您的图例。

这将使您的第二个系列显示为虚线:

plot.getRenderer().setSeriesStroke(
    1, 
    new BasicStroke(
        2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
        1.0f, new float[] {6.0f, 6.0f}, 0.0f
    )

编辑:我最初的“第二选项”是错误的。这里有一个更好的方法:

覆盖AbstractRenderer中的getItemStroke()方法。

     final BasicStroke dashedStroke = new BasicStroke(
                  2.0f, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND,
                  1.0f, new float[] {6.0f, 6.0f}, 0.0f);
     XYLineAndShapeRenderer render = new XYLineAndShapeRenderer() {
        @Override
        public Stroke getItemStroke(int row, int column) {
            if (column < dashedThreshold) {
                return lookupSeriesStroke(row);
            } else {
               return dashedStroke;
            }
       };
票数 13
EN

Stack Overflow用户

发布于 2011-10-18 02:11:05

您可以扩展XYLineAndShapeRenderer,并覆盖为不同项目提供不同笔触的getItemStroke

默认实现只返回序列笔画。

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 01:41:21

也许你应该为真实数据和预测数据定义不同的数据集。不仅更改线条样式会更简单,而且代码可能也会更清晰。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7797353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档