有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JavaFX线条图颜色差异

我在JavaFx中有一个有两条线的线图,我想给线之间的空间上色。我在网上搜索了一下,但什么也没找到。 这就是我所拥有的: enter image description here

我希望它看起来像enter image description here


共 (1) 个答案

  1. # 1 楼答案

    感谢NwDx的评论 我能解决我的问题

    我对ChartlayoutPlotChildren()作了如下过度估计:

     super.layoutPlotChildren();
        XYChart.Series s =  (XYChart.Series) getData().get(0);
        XYChart.Series d = (XYChart.Series) getData().get(1);
        ObservableList<XYChart.Data<X,Y>> systole = s.getData();
        ObservableList<XYChart.Data<X,Y>> diastole = d.getData();
    
        for(int i = 0; i < systole.size()-1; i++)
        {       
                XYChart.Data SysPoint  = systole.get(i);
                XYChart.Data DiasPoint = diastole.get(i);
                double x = getXAxis().getDisplayPosition(SysPoint.getXValue().toString()); 
                double y = getYAxis().getDisplayPosition(DiasPoint.getYValue()); 
                double x2 = getXAxis().getDisplayPosition(systole.get((i+1)).getXValue().toString());
                double y2 = getYAxis().getDisplayPosition(diastole.get((i+1)).getYValue());
                  Polygon polygon = new Polygon();
                  LinearGradient linearGrad = new LinearGradient(
                0,   // start X 
                0,   // start Y
                0,   // end X
                1, // end Y
                true, // proportional
                CycleMethod.NO_CYCLE, // cycle colors
                // stops
                new Stop(0.1f, Color.rgb(255, 0, 0, .3)),
                new Stop(0.5f, Color.rgb(127, 0, 127, .3)),
                new Stop(1.0f, Color.rgb(0, 0, 255, .3)));
    
                    polygon.getPoints().addAll(new Double[]{
                        x,y,
                        x, getYAxis().getDisplayPosition(SysPoint.getYValue()),   
                          x2,getYAxis().getDisplayPosition(systole.get((i+1)).getYValue()), 
                        x2,y2
                    });
                getPlotChildren().add(polygon);
                polygon.toFront();
                polygon.setFill(linearGrad);
        }               
    
    
    }
    

    我创建了一个连接两个收缩点和两个舒张点的多边形,并用线性半径填充它们

    我的图表现在看起来像: enter image description here