2015-06-06 3 views
0

Я работаю с диаграммой C# и ссылкой. в C# - How do you make a chart object start at 0 on the X axis?C# chart Как установить начальные точки оси X

Вот мой пример данных:

 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]); 
    } 

А вот это выход

Chart Out Put

Как вы видите диаграмма значений начинается с 1, но это shoul d начинается с 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]); 
} 

затем я получаю выходной

enter image description here

не получают 0,5 интервалов и нулю, показывающие 2 раза

+0

Используйте Points.AddXY, чтобы явно задавать значения x вместо Points.AddY! – TaW

+0

@Taw также попытался, но изменил эти метки X-оси, как в моих образцовых данных, значит 2.0, 4.0, 5.0 и т. Д., А не в 0,5 интервалах, как показано на диаграмме. –

+0

См. Мой обновленный ответ! – TaW

ответ

1

Если вы хотите контролировать X-Values, вы должны добавить DataPoints, используя метод AddXY.

с помощью этого

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); 

результаты в этих двух графиках ..:

enter image description hereenter image description here

Все остальное ваш код. (Разница в размерах - только от ручного изменения размера).

Стоит посмотреть в X-Values первой версии: все они 0!

В вашем случае вы должны написать:

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

Btw, вы можете пересмотреть установив X-Values в string; это обычно оставляет вас только с небольшим контролем.

Смежные вопросы