ChartControl - X轴上的重复值

时间:2017-03-25 03:26:34

标签: c# winforms mschart

我正在尝试在C#windows窗体应用程序中绘制一个简单的图表。 绘制此图表的数据将以运行时为单位。 问题是它没有参考X轴值绘制图表上的唯一点。例如,对于两个点(5,1)和(5,3),它在X轴上显示“5”值两次。

我尝试寻找类似问题的解决方案,但都没有帮助。 以下是我的代码的外观: (我故意在click事件处理程序中移动声明以便于参考)

    private void button1_Click(object sender, EventArgs e)
    {
        Series series3 = new Series
        {
            Name = "Series3",
            Color = System.Drawing.Color.Red,
            IsVisibleInLegend = false,
            IsXValueIndexed = true,
            ChartType = SeriesChartType.Line
        };

        double startPosition = 2;
        double endPosition = 4;

        double startForceLow = 1;
        double startForceHigh = 3;
        double endForceLow = 5;
        double endForceHigh = 7;

        chart1.Series.Clear();
        this.chart1.Series.Add(series3);

        double[] xPoints = { startPosition, startPosition, endPosition, endPosition, startPosition };
        double[] yPoints = { startForceLow, startForceHigh, endForceHigh, endForceLow, startForceLow };

        //Adding individual points too does not work
        //series3.Points.AddXY(startPosition, startForceLow);
        //series3.Points.AddXY(startPosition, startForceHigh);
        //series3.Points.AddXY(endPosition, endForceHigh);
        //series3.Points.AddXY(endPosition, endForceLow);
        //series3.Points.AddXY(startPosition, startForceLow);

        chart1.Series["Series3"].XValueType = ChartValueType.Double;
        chart1.Series["Series3"].YValueType = ChartValueType.Double;

        chart1.Series["Series3"].Points.DataBindXY(xPoints, yPoints);

        chart1.Invalidate();
    }

以下是图表的外观: ChartControl with repeated values for X-Axis

1 个答案:

答案 0 :(得分:0)

原因是您告诉图表忽略 X-Values并使用他们的索引代替它们:

IsXValueIndexed = true

删除该行或将该属性设置为默认 false

结果:

enter image description here

有关说明,请参阅here on MSDN

  

True 如果属于系列的数据点的索引为   用于X值; false 如果他们。默认值为 false

在极少数情况下这是有用的,但你的不是其中之一。实际上Line图表几乎没有;但有些图表却很好地利用它......:

  

系列中的所有数据点都使用顺序索引,如果是这样的话   属性为true,则数据点将按顺序绘制,   无论其相关的X值如何。这意味着会有   没有“缺失”的数据点   ...
  ...
  当您不希望缺少数据点时,这非常有用   您知道自己没有数据的时间间隔,例如周末。

     

重要

     

如果您正在显示多个系列,并且至少有一个系列使用索引的X值,那么所有系列都必须对齐 - 也就是说,具有   相同数量的数据点 - 相应的点必须具有   相同的X值。