我有自定义数据类型,基本上存储为长x
和小数y
,并且它们已编入索引,因此我有data.Series["example"].Values[].x
和data.Series["example"].Values[].y
但是我想访问所有的元素,它一直要求我有空方括号的值,但有3000多个元素,所以显然不会手动输入每个元素,我的最终目标是我想要图表元素,一个是X,另一个是Y。我在用于MS图表的DataBindXY()
方法中使用它。
我是否需要先将其转换为其他类型(如果是这样的类型和方式?),或者我只是在这里错过了一些简单的东西?但我无法弄清楚如何选择整个数组作为我的图表的数据。
谢谢!
编辑: 我正在尝试从y数组中获取最大值和最小值,其类型为decimal []然后将max / min设置为图表y轴范围,因此它显示正确,但是当我尝试设置“十进制yValMax = yvals.Max();“然后设置chart.ChartAeas [0] .AxisY.Minimum = yValMin;我得到了一个ArgumentOutOfRange异常,我调试了它,它在yValMax和yValMin变量中得到了正确的值,但是当它试图将它设置为Y轴边界时失败了?帮助??
答案 0 :(得分:0)
听起来你正在使用DataPointCollection
。从DataBindXY()
上的文档来看,似乎这样的内容适合您。
让以下chart
成为您的DataPointCollection
:
chart.DataBindXY(
data.Series["example"].Values.Select(val => val.x),
data.Series["example"].Values.Select(val => val.y)
);
这当然假设data.Series["example"].Values
实现了IEnumerable
。如果它是传统的Array
,List
或Collection
,那么您应该没问题。
如果不是,你可以为每个(X和Y)创建自己的List
:
List<long> seriesX = new List<long>();
List<Decimal> seriesY = new List<Decimal>();
for (int ix = 0; ix < 3000; ix++)
{
seriesX.Add(data.Series["example"].Values[ix].x);
seriesY.Add(data.Series["example"].Values[ix].y);
}
chart.DataBindXY(seriesX, seriesY);
你说在数组中有大约3000条记录,所以我对其进行了硬编码,但是你得到了这些记录。