2013-12-09 20 views
3

请参阅图表更改图表中的图例文字?

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}"; 

回答

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]; 
    } 
} 
6

我找到了答案,通过使用下面的代码:

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

这没有为我工作,我添加像这样的数据'Series1.Points.AddXY(“付费”,8500)' – Smith

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"; 
+1

这应该是最好的答案WER。一个馅饼只有几个点,它很容易一个接一个地访问它们。 –

+0

我在什么时候添加'... LegendText'?它出于某种原因没有显示在我的图表中。 – Si8

+0

只要DataPoints就位,它确实没有关系。注意Pie和所有其他charttype的__fundamantal区别___:对于Pie,Legend将为每个Point显示一些文本,对于所有其他类型,它将显示与系列相关的文本! – TaW