我有一个包含12个数据点的简单图表。问题是它在开始趋势线之前显示一个小的白色区域。 这是代码
for (int i = 0; i < 12; i++)
{
chart1.Series[0].Points.AddXY(DataTable.Rows[i].ItemArray[0], plotDataTable.Rows[i].ItemArray[1]);
chart1.Series[1].Points.AddXY(DataTable.Rows[i].ItemArray[0], plotDataTable.Rows[i].ItemArray[2]);
chart1.Series[2].Points.AddXY(DataTable.Rows[i].ItemArray[0], DataTable.Rows[i].ItemArray[3]);
chart1.Series[3].Points.AddXY(DataTable.Rows[i].ItemArray[0], DataTable.Rows[i].ItemArray[4]);
}
DataTable的第一列是字符串,其他四列是浮点数。
答案 0 :(得分:1)
您需要将AxisX.Minimum
设置为合适的值。
通常这是0
或第一 DataPoint
的x值。
但是添加值的方式不起作用。
您正在以一种相当不幸的方式添加DataPoints
,这有时是可以的,但通常会产生各种各样的问题。
推荐的方法是将x值添加为数字或DateTimes
,其内部将转换为doubles
。
但你添加了strings
。这个看起来确定,但x值除了0s
之外不包含其他任何字符串。因此,您无法使用它们来设置范围或工具提示或缩放范围或计算内容..
但是如果你愿意,你仍然可以通过将最小值设置为1
来获得所需的结果:
ChartArea ca = yourChart.ChartAreas[0];
ca.AxisX.Minimum = 1;
我也将我的x值添加为字符串,但它们看起来像数字。
但推荐的方法是将您的值转换为数字,以便您可以将它们用于各种各样的事情。
一些注意事项:
此转换由图表完成,如果可能的话, y值但不是x值!也许是因为没有数字y值的图表根本没有意义,而有时x值根本不包含有意义的数字数据,如名称,ID,邮政编码等。
不要让视觉效果欺骗你:strings
只会复制到轴标签中;否则他们丢失! (您应该使用调试器进行检查!!)
您可能会注意到屏幕截图中Label更改的数量。该数字是从x轴的Interval
计算出来的。默认情况下,它会自动计算(Interval=double.NaN
)以适合合理的数字。您可以将其设置为您喜欢的任何距离。 Normaly它指的是轴单位,但在这种情况下指的是点数。将其设置为2
,每第2个点获得一个Label
;将其设置为0.5
,每Labels
获得2 DataPoint
..
将实数(或数据时间)作为x值,您还可以设置间隔类型,如秒或天..
答案 1 :(得分:0)
默认情况下,ChartArea的IsStartedFromZero属性设置为true。此设置将强制图表始终从零开始。尝试将其设置为false:
chart1.ChartAreas[0].AxisX.IsStartedFromZero = false;
chart1.ChartAreas[0].AxisY.IsStartedFromZero = false;