2016-06-08 21 views
0

Ich versuche, die Achsen eines Diagramms in C# mit den folgenden Parametern zu initialisieren:Datetime-Achsendiagramm zeigt keine Daten

chart1.ChartAreas[0].AxisX.Maximum = 20; 
chart1.ChartAreas[0].AxisX.Minimum = 0; 
chart1.ChartAreas[0].AxisX.Interval = 5; 

System.DateTime x1 = new System.DateTime(2016, 6, 8, 12, 00, 00); 
System.DateTime x2 = new System.DateTime(2016, 6, 8, 23, 00, 00); 

chart1.ChartAreas[0].AxisY.Maximum = x2.ToOADate(); 
chart1.ChartAreas[0].AxisY.Minimum = x1.ToOADate(); 

Nach dem obigen Code ausgeführt wird Ich versuche hinzufügen indem einige Daten in die Grafik:

DateTime x = DateTime.Now; 
chart1.Series[0].Points.AddXY(i,x.ToOADate()); 

(wo ich auf U-Boote erhöht wird Equent Datenaddition)

Aber sobald ich beide Achsen initialisiere, zeigt das Diagramm keine Daten mehr an.

Wenn ich die Min- und Max-Achse der Y-Achse nicht einstelle, wird die folgende Auftragung erfolgreich angezeigt.

demo plot

Wie kann ich initialisieren sowohl die Achsen und weiterhin Daten in der Tabelle zeichnen?

Danke!

----- UPDATE 1 -----

Es funktioniert jetzt. Änderungen vorgenommen: In der Designer-Ansicht wurde Charting/Series/YValueType für die Eigenschaften des Diagramms in DateTime geändert. Vorher war es nur Zeit.

Danke!

+0

In 'AddXY()', vergewissern Sie sich, dass Sie 'x' und' y' Koordinaten nicht vermischen. – jsanalytics

+0

Ich habe Ihren Code versucht und funktioniert gut für mich. –

+0

@jstreet - Es sieht gut aus. Wenn die Achsenbereiche nicht gesetzt sind, ist es in Ordnung. – chiro3110

Antwort

0

Ich versuchte den folgenden Code, Ich legte Diagrammsteuerung, Knopf und Timer in Form.

DateTime minValue, maxValue; 
    int i = 0; 
    public Form6() 
    { 
     InitializeComponent(); 
    } 


    private void button1_Click(object sender, EventArgs e) 
    { 
     chart1.ChartAreas[0].AxisY.LabelStyle.Format = "HH:mm:ss"; 

     minValue = DateTime.Now;  
     maxValue = minValue.AddSeconds(60); 

     chart1.ChartAreas[0].AxisX.Maximum = 20; 
     chart1.ChartAreas[0].AxisX.Minimum = 0; 
     chart1.ChartAreas[0].AxisX.Interval = 5; 

     System.DateTime x1 = new System.DateTime(2016, 6, 8, 12, 00, 00); 
     System.DateTime x2 = new System.DateTime(2016, 6, 8, 23, 00, 00); 

     chart1.ChartAreas[0].AxisY.Maximum = x2.ToOADate(); 
     chart1.ChartAreas[0].AxisY.Minimum = x1.ToOADate(); 

     timer1.Start(); 

    } 

    private void timer1_Tick(object sender, EventArgs e) 
    { 
     DateTime x = DateTime.Now; 
     chart1.Series[0].Points.AddXY(i, x.ToOADate()); 
     i++; 
    }