Удалить лишние значения оси X
У меня проблемы с удалением лишних значений в столбце x. По сути, мой график не начинается с 0 и не заканчивается в моей последней точке данных. Я попытался начать ось с 0, а также установить смещение интервала на -20 (мой интервал - 20).
Можно ли как-нибудь избавиться от лишних значений по обе стороны от моих данных?
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;
Вот единственный код настройки, который я использую.
1 ответ
Вам нужно установить Minimum
а также Maximum
вашей оси х.
Но: Это может работать, только если вы добавили значения x в виде чисел (или даты-времени) ! Ваш нет!
Вот изменения, которые помогут:
Измените значения x на числа:
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];
Теперь вы можете установить диапазон, который будет отображать ось X:
impairmentGraph.ChartAreas[0].AxisX.Minimum = 1;
impairmentGraph.ChartAreas[0].AxisX.Maximum = 5;
С моими данными результат выглядит так:
Обратите внимание, что когда вы добавляете x-значения как string
все они будут преобразованы в double
в результате чего значения 0,0d для всех точек. (Проверьте это в отладчике!!) Поэтому вы больше не можете их использовать ни для чего; не для установки диапазона, ни для форматирования этикеток, ни для подачи Tooltips
так далее..
Тот факт, что строки сначала подаются в AxisLabels
вводит в заблуждение многих людей, полагая, что все хорошо, это не..
Также обратите внимание, что я всегда выбирал List над массивами и что этот довольно фиксированный набор данных не приносит прибыли от привязки данных, тем более что нам нужен доступ к каждому DataPoint
тем не мение..