7

当我在没有放置图表类型的情况下执行此操作时,工作正常,但是当我将其设置为饼图时,它无法正常工作。它将所有系列名称作为第 1 点,馅饼只有 1 个蓝色块(一个圆圈),它只显示第一个点(值)。

foreach (var tag in tags)
{
    HtmlNode tagname = tag.SelectSingleNode("a");
    HtmlNode tagcount = tag.SelectSingleNode("span/span");
    chart1.Series.Add(tagname.InnerText);
    chart1.Series[x].Points.AddY(int.Parse(tagcount.InnerText));
    chart1.Series[x].IsValueShownAsLabel = true;
    chart1.Series[x].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
    x++;
}
4

1 回答 1

15

您正在添加多个Series,每个都有一个Point。因此,图表控件仅显示第一个Series. 我相信您想要做的是将多个点添加到单个Series.

我不确定我是否理解您要使用的内容,但下面的代码演示了如何使用标签名称作为键和整数作为值HtmlNode来构建简单的饼图。Dictionary

        Dictionary<string, int> tags = new Dictionary<string,int>() { 
            { "test", 10 },
            { "my", 3 },
            { "code", 8 }
        };

        chart1.Series[0].Points.Clear();
        chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
        foreach (string tagname in tags.Keys)
        {
            chart1.Series[0].Points.AddXY(tagname, tags[tagname]);
            //chart1.Series[0].IsValueShownAsLabel = true;
        }
于 2013-01-07T12:39:56.343 回答