JFreechart(Java) - 如何绘制部分虚线和部分实线的线条?

Bis*_*itz 4 java jfreechart forecasting

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

这是使用Excel绘制的演示图.

在此输入图像描述

我在谈论图中的灰线.这就是我想要的.我不知道是否有渲染器允许我指示哪个范围是虚线还是实线

Jor*_*ley 12

我有两种方法可以做到这一点.它们都不优雅,但这可能是你问题的现实.

一个是你可以定义两个恰好相互连接的系列.这可能是您的最佳选择,但您还必须修复您的传奇.

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

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

编辑:我原来的"第二选择"是错误的.这是一个更好的方法:

覆盖getItemStroke()方法AbstractRenderer.

     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;
            }
       };
Run Code Online (Sandbox Code Playgroud)

  • +1 ......虽然`getItemStroke`不应该每次都创建一个新的`BasicStroke`.每次重新绘制时,每个系列的每个项目都会被调用. (2认同)