如何使x轴忽略x值的顺序?

时间:2012-09-03 23:15:50

标签: c# .net charts

首先,如果我的英语不太好,我很抱歉......

我有4个数组(前2个用于#1系列),我想将它们绑定到我的图表:

double[] yValues1 = { 65.62, 75.54, 60.45, 55.73, 70.42, 200 };
string[] xValues1 = { "France", "Canada", "UK", "USA", "Italy", "India" };
chart.Series["Series1"].Points.DataBindXY(xValues1, yValues1);

double[] yValues2 = { 65.62, 75.54, 60.45, 55.73, 200, 70.42 };
string[] xValues2 = { "France", "Canada", "UK", "USA", "India", "Italy"};
chart.Series["Series2"].Points.DataBindXY(xValues2, yValues2);

结果是(观察:意大利和印度的价值和顺序):

正如你所看到的,印度假设两个系列都有200个,但第二个系列中的200个指的是意大利(在第一个系列中排名第五),好像它是按照第一个系列进行的。简而言之,我希望无论xValues的顺序如何,都要显示两个系列,但要根据它们的字符串值显示。

顺便说一句,我怎样才能限制列的数量,即使我用长度大于那个限制的数组绑定图表?

2 个答案:

答案 0 :(得分:3)

要完成此操作,请添加对AlignDataPointsByAxisLabel的调用:

Chart.AlignDataPointsByAxisLabel();

这将使所有数据点与相同的轴标签对齐,无论它们绑定的顺序如何。

答案 1 :(得分:0)

可以将xValue和yValue添加到SortedDictionary中。这会使值和键保持一致。

chart1.Series.Add("Series1");
chart1.Series.Add("Series2");

SortedDictionary<string, double> sd1 = new SortedDictionary<string, double>();
SortedDictionary<string, double> sd2 = new SortedDictionary<string, double>();
sd1.Add("france", 65.52);
sd2.Add("france", 65.52);
sd1.Add("india", 200);
sd2.Add("italy", 40);
sd1.Add("italy", 50);
sd2.Add("india", 200);

chart1.Series["Series1"].Points.DataBindXY(sd1.Keys, sd1.Values);
chart1.Series["Series2"].Points.DataBindXY(sd2.Keys, sd2.Values);