2015-03-22 2 views
0

Я пытаюсь выяснить, как к началу оси X в моей линейной диаграмме на первой дате, хранящейся в объекте. Я пробовал уже довольно давно, и я не уверен, что я делаю неправильно. Любая помощь будет оценена по достоинству.Настройка startdate на линейной диаграмме

Он просто говорит, что я не могу конвертировать из DateTime в Double, что имеет смысл, но я понятия не имею, как обойти это.

Я отступил от части кода, который я пытаюсь сделать. Заранее спасибо!

enter image description here

private void loadChart(List<Temperatur> templist) 
{ 
    // clear charts 
    this.chart1.Series.Clear(); 
    this.chart2.Series.Clear(); 

    // add Data to charts 
    Series series = this.chart1.Series.Add((templist.ElementAt(0).Date).ToString()); 
    Series series2 = this.chart2.Series.Add((templist.ElementAt(0).Date).ToString()); 
    // defines type of chart 
    series.ChartType = SeriesChartType.Line; 
    series2.ChartType = SeriesChartType.Line; 
    // sets line thickness 
    series.BorderWidth = 3; 
    series2.BorderWidth = 3; 
    // sets chart limits and intervals 
    chart1.ChartAreas[0].AxisY.Maximum = 42; 
    chart1.ChartAreas[0].AxisY.Minimum = 35; 
    chart1.ChartAreas[0].AxisY.Interval = 0.5; 

    //sets X axis labels 
     chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days; 
     chart1.ChartAreas[0].AxisX.Minimum = Convert.ToDouble(templist.ElementAt(0).Date); 

    // removes legend from chart 
    chart1.Legends[0].Enabled = false; 
    chart2.Legends[0].Enabled = false; 

    foreach (Temperatur tempObj in templist) 
    { 
    // Add point. 
    series.Points.Add(Convert.ToDouble(tempObj.Temp)); 

    } 


    foreach (Temperatur tempObj in templist) 
    { 
     // Add point. 
     series2.Points.Add(Convert.ToInt32(tempObj.Puls.ToString())); 
    } 


} 
+0

Просьба описать, как это «не работает» - Вы могли бы использовать AddXY включить Х- Значения в ваших точках данных. – TaW

+0

Добавлено небольшое описание проблемы. –

+0

ОК, какая линия? Добавить звонки? Смотрите мой комментарий выше! – TaW

ответ

1

Вы можете добавить DataPoints в нескольких форматах.

Вы хотите, чтобы иметь X-Value типа DateTime и Y-значение типа double, поэтому использовать вызов вроде этого:

series.Points.AddXY(tempObj.Date, tempObj.Temp); 

Если вы хотите, чтобы начать показ в виде Minimum вы нужно использовать ключ коллекции очков, если X-Значения являются датами, это будет дата, если они являются числами (по умолчанию удваивается), вы используете число.

Если вы не установили X-значения, они начнут в 0 по умолчанию (который будет показан в качестве при литье в DateTime ..)

Это будет немного сложнее, так как Minimum только принимает двойники; это потому, что даже если ваш тип установлен на DateTime, и даже если вы добавили DateTime X-Values, внутренне, они все еще хранятся как double.

Чтобы установить Minimum и т.д. после того, как вы добавили DataPoints с их X-Values, как DateTimes вы можете использовать:

int yourStartIndex = 1; 
chart1.ChartAreas[0].AxisX.Minimum = series.Points.ElementAt(yourStartIndex).XValue; 

Для управления отображается метка по оси X установить его Format; вот пример:

chart1.ChartAreas[0].AxisX.LabelStyle.Format = "dd.MM.\\'yy hh\\h"; 

Примечание добавленный «ч» и добавил апостроф в результате чего-то вроде: 21.03'15 12h

+0

С небольшим шансом быть грубым. Есть ли шанс, что вы снова сможете присоединиться к чату? –

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