2017-01-20 6 views
1

У меня возникли проблемы с удалением дополнительных значений в столбце x. В принципе, мой график не начинается с 0 и не заканчивается в моей последней точке данных. Я попытался запустить ось в 0, а также установить интервал смещения на -20 (мой интервал равен 20).Удалить дополнительные значения оси x

Есть ли способ избавиться от дополнительных значений по обе стороны от моих данных?

string[] xValues = new string[5] { "QE1", "QE2", "QE3", "QE4", $"{DateTime.Now.ToShortDateString()}" }; 

     PlotBaselines(xValues); 

     var amCost = new Series() 
     { 
      Name = "AmCost", 
      Color = Color.Blue, 
      IsVisibleInLegend = true, 
      IsXValueIndexed = true, 
      ChartType = SeriesChartType.Line 
     }; 
     impairmentGraph.Series.Add(amCost); 
     // Test Values 0 - 20 
     float[] amCostValues = new float[5] { 5, 15, 20, 13, 6 }; 
     impairmentGraph.Series["AmCost"].Points.DataBindXY(xValues, amCostValues); 

Представьте код для данной серии. Каждый из них один и тот же.

impairmentGraph.ChartAreas[0].AxisY.Maximum = 100; impairmentGraph.ChartAreas[0].AxisY.Interval = 20; impairmentGraph.ChartAreas[0].AxisX.IntervalOffset = -20; impairmentGraph.ChartAreas[0].AxisX.IsStartedFromZero = true;

Вот только установить код, я использую.

Picture illustrating my issue

ответ

1

Вы должны установить Minimum и Maximum вашей оси х.

Но: Это может только работать, если вы добавили рентгеновские значения в качестве чисел (или DateTimes) ! У вас нет!

Вот изменения, которые помогут:

Изменить в xvalues ​​номера:

double[] xValues = new double[5] { 1,2,3,4,5 }; 

Поместите этикетки в другом массиве:

string[] xLabels = new string[5] { "QE1", "QE2", "QE3", "QE4", 
            $"{DateTime.Now.ToShortDateString()}" }; 

После связывания данных вам необходимо установить AxisLabels для DataPoints:

for (int i = 0; i < xValues.Length; i++) 
      impairmentGraph.Series["AmCost"].Points[i].AxisLabel = xLabels[i]; 

Теперь вы можете установить диапазон ось х должна отображать:

impairmentGraph.ChartAreas[0].AxisX.Minimum = 1; 
impairmentGraph.ChartAreas[0].AxisX.Maximum = 5; 

С моим данным результатом выглядит следующим образом:

enter image description here

Обратите внимание, что при добавлении х-значения как string все они будут преобразован в double, что приводит к значениям 0,0dдля все моменты. (Проверьте это в отладчике!) Поэтому вы больше не можете использовать их для что-нибудь; не для установки диапазона, ни для форматирования этикеток или для подачи Tooltips и т.д ..

Тот факт, что строки первого подается в AxisLabels уводит много людей, чтобы предположить, что все хорошо, это не ..

Также обратите внимание, что я всегда выбирал List over array и что этот довольно фиксированный набор данных не извлекает выгоду из привязки данных, тем более что нам нужно получить доступ к каждому DataPoint в любом случае.

+0

Отличный ответ, спасибо. Я попробую это на работе в понедельник. –

+0

Это сработало, спасибо :) –

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