请参阅我的示例图表
现在,我想更改图例的文本(不显示百分比值)与系列数据的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}";
答案 0 :(得分:7)
我使用以下代码找到答案:
myChart.Series["Default"].Label = "#PERCENT";
myChart.Series[0].LegendText = "#VALX";
答案 1 :(得分:5)
不需要黑客,这都是内置的:
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];
}
}