Построение всех значений даты по оси X в подсвечнике С#

Необходимо найти решение для отображения всех значений дат на графике свечей в С#. Создайте структуру, содержащую дату в виде строки вместе со значениями для открытия, максимума, минимума и закрытия. Чтение значений из файла .csv с биржевыми данными. В настоящее время он правильно отображает все точки, но отображает только несколько значений даты в зависимости от количества нанесенных значений. См. прикрепленное изображение.

Я хотел бы, чтобы он отображал все даты, применимые к значениям на диаграмме. Таким образом, в этом случае даты, которые должны отображаться, следующие:

  • 2/25/2015
  • 2/24/2015
  • 2/23/2015
  • 2/20/2015
  • 2/19/2015
  • 2/18/2015
  • 2/17/2015
  • 2/13/2015
  • 2/12/2015
  • 2/11/2015
  • 2/10/2015
  • 2/9/2015
  • 2/6/2015
  • 2/5/2015
  • 2/4/2015
  • 2/3/2015
  • 2/2/2015

Показаны только даты 02.02.2015, 09.02.2015, 17.02.2015 и 24.02.2015. Ниже приведен код, относящийся к текущему состоянию диаграммы.

chart1.Series["stock"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Candlestick;
/*set the maximum y value axis*/
chart1.ChartAreas[0].AxisY.Maximum = System.Convert.ToDouble(maxX);
/*set the minimum y value axis*/
chart1.ChartAreas[0].AxisY.Minimum = System.Convert.ToDouble(minY);
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = System.Drawing.Color.LightGray;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = System.Drawing.Color.LightGray;
chart1.ChartAreas[0].AxisX.MinorGrid.LineColor = System.Drawing.Color.LightGray;
chart1.ChartAreas[0].AxisX.LabelStyle.Angle = 45;

foreach (candleStick stock in chartData)
{
    int currentIndex = chart1.Series["stock"].Points.Count;
    chart1.Series["stock"].Points.AddXY(stock.date, stock.high);
    chart1.Series["stock"].Points[currentIndex].YValues[0] = System.Convert.ToDouble(stock.high);
    chart1.Series["stock"].Points[currentIndex].YValues[1] = System.Convert.ToDouble(stock.low);
    chart1.Series["stock"].Points[currentIndex].YValues[2] = System.Convert.ToDouble(stock.open);
    chart1.Series["stock"].Points[currentIndex].YValues[3] = System.Convert.ToDouble(stock.close);
    chart1.Series["stock"].Points[currentIndex].AxisLabel = stock.date;
    chart1.Series["stock"].Points[currentIndex].Color = Color.Black;
}

Любая помощь по этому вопросу будет принята с благодарностью. Спасибо!


person daftBit    schedule 26.02.2015    source источник
comment
Интервал между датами, которые я наблюдаю, равен 5, попробуйте установить интервал на chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.NotSet chart1.ChartAreas[0].AxisX.Interval=1   -  person ASN    schedule 26.02.2015
comment
Ананд Это сделал. Большое спасибо!   -  person daftBit    schedule 26.02.2015
comment
Рад, что это помогло, я добавил приведенное выше решение в качестве ответа, прошу вас отметить его как ответ.   -  person ASN    schedule 27.02.2015


Ответы (1)


Это может помочь,

chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.NotSet;
chart1.ChartAreas[0].AxisX.Interval=1;
person ASN    schedule 27.02.2015