【问题标题】:Shifting datapoints in line chart在折线图中移动数据点
【发布时间】:2021-01-11 05:16:04
【问题描述】:

我有 x 轴上有 10 个点的折线图,y 轴是可变的。 我需要的是 - 当我(例如)指向 x=3 时,它正在移动到图表的末尾(x=10)。但是当有 10 个值(x 在图表末尾)时,我需要删除 x=1 处的第一个数据点,所有数据点都向左移动,新值写入 x=10 的位置。我不知道该怎么做,我有想法,但它的工作很奇怪。 感谢您的一些想法。

它在winforms中工作。 这是图表的图像,例如:

【问题讨论】:

  • 您的目标是什么:Winforms、WPF、ASP..?您应该始终正确标记您的问题,以便人们可以在问题页面上看到它! - 非常不清楚你想要什么,你尝试了什么以及会发生什么。假设 MSChart:您可以随意添加和删除数据点,也可以随意更改 x 和 y 值。 - 请注意,对于折线图(与许多其他类型相反),实际顺序决定了外观和值!毕竟,三个点可以通过多种方式连接起来......
  • 对不起,我的错。我编辑了我的帖子。现在好点了吗?
  • 并非如此。也许这就是你想要的:Series s = chart1.Series[0]; s.Points.RemoveAt(0); int xmax = (int)s.Points.Max(x => x.XValue); s.Points.AddXY(xmax + 1, rnd.Next(8) + 7); chart1.ChartAreas[0].RecalculateAxesScale();
  • 如果您已经修复了 XAxis.Minimum/Maximum 值:要么不这样做,要么调整值!
  • 感谢您的尝试。我自己找到了解决方案,作为答案发布。

标签: c# winforms charts linechart datapoint


【解决方案1】:

我的问题的解决方案在这里:

i++;

        if(i<11) { Series s = chart1.Series["Mereni"]; s.Points.AddXY(i, Convert.ToDecimal(textBox1.Text)); }


      if( i > 10) { Series s = chart1.Series["Mereni"];
            
            



            DataPoint s1 = new DataPoint(1,s.Points[1].YValues[0]);
            DataPoint s2 = new DataPoint(2, s.Points[2].YValues[0]);
            DataPoint s3 = new DataPoint(3, s.Points[3].YValues[0]);
            DataPoint s4 = new DataPoint(4, s.Points[4].YValues[0]);
            DataPoint s5 = new DataPoint(5, s.Points[5].YValues[0]);
            DataPoint s6 = new DataPoint(6, s.Points[6].YValues[0]);
            DataPoint s7 = new DataPoint(7, s.Points[7].YValues[0]);
            DataPoint s8 = new DataPoint(8, s.Points[8].YValues[0]);
            DataPoint s9 = new DataPoint(9,s.Points[9].YValues[0]);
            s.Points.Clear();


            s.Points.Add(s1);
            s.Points.Add(s2);
            s.Points.Add(s3);
            s.Points.Add(s4);
            s.Points.Add(s5);
            s.Points.Add(s6);
            s.Points.Add(s7);
            s.Points.Add(s8);
            s.Points.Add(s9);
            s.Points.AddXY(10, Convert.ToDecimal(textBox1.Text));



            /*   s.Points.AddXY(10, Convert.ToDecimal(textBox1.Text)); */
            chart1.ChartAreas[0].RecalculateAxesScale(); }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-03
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多