更改图表中图例的文字?

时间:2013-12-09 01:33:52

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

请参阅我的示例图表

enter image description here

现在,我想更改图例的文本(不显示百分比值)与系列数据的xValues相同,例如:伦敦,东京,巴黎......(仍保留饼图中的百分比值)

你知道怎么做吗?

我使用以下代码:

int[] yValues = { 50, 20, 10, 20 }; 
string[] xValues = { "London", "Paris", "Newyork", "Tokyo"};

myChart.Series["Default"].Points.DataBindXY(xValues, yValues);
myChart.Series[0].Label = "#PERCENT{P2}";

3 个答案:

答案 0 :(得分:7)

我使用以下代码找到答案:

myChart.Series["Default"].Label = "#PERCENT";
myChart.Series[0].LegendText = "#VALX";

答案 1 :(得分:5)

不需要黑客,这都是内置的:

enter image description here

Series s = chart1.Series.Add("Pie");
s.ChartType = SeriesChartType.Pie;
s.IsValueShownAsLabel = true;

s.Points.AddXY(0, 12);
s.Points.AddXY(1, 22);
s.Points.AddXY(2, 42);

s.Points[0].LegendText = "wo";
s.Points[1].LegendText = "wa";
s.Points[2].LegendText = "wi";

答案 2 :(得分:4)

这是一个非常黑客,我希望你有充分的理由想要这个。您挂钩到CustomizeLegend事件:

private void myChart_CustomizeLegend(object sender, CustomizeLegendEventArgs e)
{
    foreach (LegendItem LI in e.LegendItems)
    {
        LI.Cells[1].Text = LI.Cells[1].Text.Replace('%', ' ');            
    }
}

另一个版本,以防您想要城市名称。请添加错误处理:

private void myChart_CustomizeLegend(object sender, CustomizeLegendEventArgs e)
{
    string[] xValues = { "London", "Paris", "Newyork", "Tokyo" };

    for (int i = 0; i < e.LegendItems.Count; i++)
    {
        e.LegendItems[i].Cells[1].Text = xValues[i];
    }
}