1

如果点数> 100,我想永久更改线条颜色;我的意思是我想在图表上看到数据大于 100 的红线,数据小于 100 的绿线。我该怎么做?

在此处输入图像描述

如果可能的话,我想要矩形内的数据范围的红线。

4

2 回答 2

2

我认为不可能改变曲线中几个点的颜色,但你可以使用Zedgraph的 BoxObject 来改变一个区域的颜色。

尝试以下操作:

 private void drawRegion()
    {
        GraphPane pane = zedGraphControl1.GraphPane;

        BoxObj box = new BoxObj(0, 20, 500, 10,Color.Empty, Color.LightYellow);

        box.Location.CoordinateFrame = CoordType.AxisXYScale;
        box.Location.AlignH = AlignH.Left;
        box.Location.AlignV = AlignV.Top;

        // place the box behind the axis items, so the grid is drawn on top of it
        box.ZOrder = ZOrder.E_BehindCurves;
        pane.GraphObjList.Add(box);

        // Add Region text inside the box 
        TextObj myText = new TextObj("Threshold limit", 100, 15);
        myText.Location.CoordinateFrame = CoordType.AxisXYScale;
        myText.Location.AlignH = AlignH.Right;
        myText.Location.AlignV = AlignV.Center;
        myText.FontSpec.IsItalic = true;
        myText.FontSpec.FontColor = Color.Red;
        myText.FontSpec.Fill.IsVisible = false;
        myText.FontSpec.Border.IsVisible = false;
        pane.GraphObjList.Add(myText);

        zedGraphControl1.Refresh();
    }

在此处输入图像描述

于 2013-09-12T11:29:13.573 回答
2

查看Gradient-By-Value示例图表。该图表使用第三个坐标 (Z) 来指示点的颜色,通过设置:

curve.Symbol.Fill.Type = FillType.GradientByZ;

同样,您可以使用GradientByY指示应使用 y 轴值。然而,如果RangeMinRangeMax相等,错误的颜色将应用于整个图表,因此您需要使它们相差一个相对较小的值。

curve.Symbol.Fill = new Fill( Color.Green, Color.Red );
curve.Symbol.Fill.Type = FillType.GradientByY;
curve.Symbol.Fill.RangeMin = 100 - 1e-3;
curve.Symbol.Fill.RangeMax = 100;
于 2013-09-12T09:27:45.720 回答