【发布时间】:2020-04-23 00:04:50
【问题描述】:
我正在使用 C# 图表和参考。给C# - How do you make a chart object start at 0 on the X axis?
这是我的示例数据:
X Value ( From _LOWER )
======================
0 0
0.5 100
1.0 200
1.5 300
2.0 400
2.5 500
4.0 600
5.0 700
7.5 800
10.0 900
12.5 1000
我正在使用以下代码:
chart1.Series.Clear();
chart1.ChartAreas[0].AxisY.Interval = 200;
chart1.ChartAreas[0].AxisX.Interval = 0.5;
chart1.ChartAreas[0].AxisX.IntervalAutoMode = IntervalAutoMode.VariableCount ;
chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Number;
chart1.ChartAreas[0].AxisX.Minimum = 0;
chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
chart1.ChartAreas[0].AxisY.Minimum = 0;
chart1.Series.Add("Trial 1");
chart1.Series["Trial 1"].ChartType = SeriesChartType.Line;
chart1.Series["Trial 1"].BorderWidth = 2;
chart1.Series["Trial 1"].XValueType = ChartValueType.String;
chart1.Series["Trial 1"].IsValueShownAsLabel = true;
this.chart1.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.DashDotDot;
this.chart1.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = System.Windows.Forms.DataVisualization.Charting.ChartDashStyle.DashDotDot;
this.chart1.ChartAreas[0].IsSameFontSizeForAllAxes = true;
DataRowCollection _dr = _CObjectsofClasses._obj_CDatabase._MGetDataRows("select _LOWER from tblCHART ORDER BY [_CHARTID]");
foreach (DataRow _drRow in _dr)
{
chart1.Series["Trial 1"].Points.AddY(_drRow[0]);
}
这是输出
正如您在图表中看到的,值从 1 开始,但它应该从 0 开始,如图所示,100 显示在 2 上而不是 0.5,200 显示在 3 上而不是 1 上,依此类推... .
请指出我哪里错了。
更新
如果我使用代码(添加 XY 轴)
DataRowCollection _dr = _CObjectsofClasses._obj_CDatabase._MGetDataRows("select _SNAME, _LOWER from tblCHART ORDER BY [_CHARTID]");
foreach (DataRow _drRow in _dr)
{
chart1.Series["Trial 1"].Points.AddXY(_drRow[0], _drRow[1]);
}
然后我得到输出
没有得到 0.5 个间隔和零显示 2 次p>
【问题讨论】:
-
使用 Points.AddXY 来显式设置 x 值而不是 Points.AddY !
-
@Taw 也尝试过,但它在我的示例数据中更改了 X 轴标签,表示 2.0、4.0、5.0 等,而不是图表中显示的 0.5 间隔。
-
查看我的更新答案!
标签: c# sql-server charts