【问题标题】:C# chart How to Set start points of X axisC#图表如何设置X轴的起点
【发布时间】: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


【解决方案1】:

如果您想控制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);

这两个图表的结果..:

剩下的就是你的代码了。 (大小差异只是手动调整大小..)

值得一看的是第一版的X-Values:都是0

在你的情况下,你应该写:

int i = 0;
foreach (DataRow _drRow in _dr)
{  
    chart1.Series["Trial 1"].Points.AddXY(i++, _drRow[1]);
}

顺便说一句,您可能需要重新考虑将X-Values 设置为string;这通常会让你几乎无法控制..

【讨论】:

    【解决方案2】:

    使用 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多