如何在';y';在相同的';x';c图表中的点

本文关键字: | 更新日期: 2023-09-27 17:59:10

我正在尝试创建一个基于字符串数组的柱状图。如果有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"被表示为两个不同的条,但在图例中颜色的表示相似

如何在';y';在相同的';x';c图表中的点

只需使用linqGroupBy为您处理它,然后在之后添加它们

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);
}
相关文章:
  • 没有找到相关文章