【问题标题】:how to add value in 'y' on same 'x' point in c# chart如何在 c# 图表中的同一“x”点上的“y”中添加值
【发布时间】:2014-04-20 15:55:29
【问题描述】:

我正在尝试基于字符串数组创建柱形图。如果超过 1 个字符串对应于相同的字符串值,则只需将数字相加并使用相同的条形表示相似的字符串。然而,我的这段代码导致在不同的柱上表示(每个柱的值都为 1):

    private void plot_chart(string[] DTCs)
    {
        foreach (string str in DTCs)
        {
            bool doNotaddSeries = false;

            foreach (var ser in chart3.Series)
            {
                if (str == ser.Name)    //series already exists
                {
                    doNotaddSeries = true;
                    ser.Points.AddY(1);
                    //MessageBox.Show(str + " exists");
                    break;
                }
            }

            if (!doNotaddSeries)
            {
                chart3.Series.Add(str);
                chart3.Series[str].Points.AddY(1);
            }

            doNotaddSeries = false;
        }
    }

我想要的是(假设)如果我有:

    str[0]="abc"
    str[1]="def"
    str[2]="abc"

我希望“abc”在单条上表示,y 上的值为 2。而“def”在 y 轴上应该有 1 个值。我得到的是“abc”被表示为 2 个不同的条,但在图例中的颜色表示相似

【问题讨论】:

    标签: c# .net visual-studio-2010 visual-studio charts


    【解决方案1】:

    只需使用 linq GroupBy 为您处理它,然后添加它们

    var DTCs = new [] {"abc", "def", "abc"};
    var points = DTCs.GroupBy(str => str).Select(group => new
        {
            x = group.Key,
            y = group.Count()
         });
    
    // loop through points adding them to the chart
    foreach (var p in points)
    {    
        // Assume this is correct for your chart object
        chart3.Series.Add(p.x);
        chart3.Series[p.x].Points.AddY(p.y);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-20
      • 1970-01-01
      • 1970-01-01
      • 2015-10-09
      相关资源
      最近更新 更多