C#图表如何设置X轴的起点
C# chart How to Set start points of X axis
我正在使用 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 次
如果您想控制 X-Values
,您应该使用 AddXY
方法添加 DataPoints
。
使用这个
for (int i = 0; i < 15; i++) chart1.Series["Trial 1"].Points.AddY(i * 50);
或这个
for (int i = 0; i < 15; i++) chart1.Series["Trial 1"].Points.AddXY(i, i * 50);
这两个图表中的结果..:[=22=]
剩下的就是您的代码。 (大小差异仅来自手动调整大小..)
第一个版本的X-Values
值得一看:都是0
!
在你的情况下你应该写:
int i = 0;
foreach (DataRow _drRow in _dr)
{
chart1.Series["Trial 1"].Points.AddXY(i++, _drRow[1]);
}
顺便说一句,您可能需要重新考虑将 X-Values
设置为 string
;这通常会让您几乎无法控制..
使用 AddXY 设置 x/y 点后,将最小值更改为 double.NaN 并将 IsMarginVisible 设置为 false
chart1.ChartAreas[0].AxisX.Minimum = double.NaN;
chart1.ChartAreas[0].AxisX.IsMarginVisible = false;
chart1.ChartAreas[0].AxisY.Minimum = double.NaN;
chart1.ChartAreas[0].AxisY.IsMarginVisible = false;
我正在使用 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 次
如果您想控制 X-Values
,您应该使用 AddXY
方法添加 DataPoints
。
使用这个
for (int i = 0; i < 15; i++) chart1.Series["Trial 1"].Points.AddY(i * 50);
或这个
for (int i = 0; i < 15; i++) chart1.Series["Trial 1"].Points.AddXY(i, i * 50);
这两个图表中的结果..:[=22=]
剩下的就是您的代码。 (大小差异仅来自手动调整大小..)
第一个版本的X-Values
值得一看:都是0
!
在你的情况下你应该写:
int i = 0;
foreach (DataRow _drRow in _dr)
{
chart1.Series["Trial 1"].Points.AddXY(i++, _drRow[1]);
}
顺便说一句,您可能需要重新考虑将 X-Values
设置为 string
;这通常会让您几乎无法控制..
使用 AddXY 设置 x/y 点后,将最小值更改为 double.NaN 并将 IsMarginVisible 设置为 false
chart1.ChartAreas[0].AxisX.Minimum = double.NaN;
chart1.ChartAreas[0].AxisX.IsMarginVisible = false;
chart1.ChartAreas[0].AxisY.Minimum = double.NaN;
chart1.ChartAreas[0].AxisY.IsMarginVisible = false;