MS图表中的空白区域

时间:2017-05-09 15:07:09

标签: c# mschart

enter image description here我有一个包含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的第一列是字符串,其他四列是浮点数。

2 个答案:

答案 0 :(得分:1)

您需要将AxisX.Minimum设置为合适的值。

通常这是0第一 DataPoint的x值。

但是添加值的方式不起作用。

您正在以一种相当不幸的方式添加DataPoints,这有时是可以的,但通常会产生各种各样的问题。

推荐的方法是将x值添加为数字DateTimes,其内部将转换为doubles

但你添加了strings。这个看起来确定,但x值除了0s之外不包含其他任何字符串。因此,您无法使用它们来设置范围或工具提示或缩放范围或计算内容..

但是如果你愿意,你仍然可以通过将最小值设置为1来获得所需的结果:

ChartArea ca = yourChart.ChartAreas[0];
ca.AxisX.Minimum = 1;

enter image description here

我也将我的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;