Guten Morgen zusammen,
ich füge Datenpunkte anhand einem DataTable einer Chart Series hinzu. Diese bestehen aus einer Zeitangabe (Format: "06:1"1) an der x-Achse und einer Zahl an der y-Achse.
Dazu meine Methode:
Spoiler anzeigen
Damit möchte ich die Gesamtleistung über den Zeitverlauf darstellen um Produktionsausfälle besser zu identifizieren. Das klappt soweit.
Nun habe ich mir gedacht, dass ich anhand der Steigung die Leistung mit anderen Tagen vergleichen könnte.
Dafür wollte ich Start und Endpunkte der TrendLinie auslesen, um damit die Steigung zu berechnen.
Spoiler anzeigen
Nun wird mir aber kein x-Wert bei dem ersten und letzten Punkt ausgegeben:
{x=0, y = 236,351}
Ich vermute, dass liegt daran, dass ich auf der x-Achse die Zeiten einfüge... Aber trotzdem muss es doch eine x-Koordinate auf dem Chart geben, mit der sich die Steigung berechnen lässt?
Oder gibt es hierzu eventuell einen anderen Ansatz?
Danke für eure Hilfestellung,
Grüße Jan
ich füge Datenpunkte anhand einem DataTable einer Chart Series hinzu. Diese bestehen aus einer Zeitangabe (Format: "06:1"1) an der x-Achse und einer Zahl an der y-Achse.
Dazu meine Methode:
VB.NET-Quellcode
- Public Sub setChartSeries(ByVal dataTable As DataTable, ByVal strSeriesName As String, ByVal cha As System.Windows.Forms.DataVisualization.Charting.Chart)
- If cha.InvokeRequired Then
- cha.Invoke(New setChartSeriesInvoker(AddressOf setChartSeries), dataTable, strSeriesName, cha)
- Else
- If Chart1.Series.IndexOf(strSeriesName) > -1 Then Me.Chart1.Series.RemoveAt(Chart1.Series.IndexOf(strSeriesName)) 'Serie löschen, wenn bereits vorhanden
- Me.Chart1.Series.Add(strSeriesName) 'Serie neue hinzufügen
- Me.Chart1.Series(strSeriesName).ChartType = DataVisualization.Charting.SeriesChartType.Line
- Me.Chart1.Series(strSeriesName).Color = Color.DarkGray
- Me.Chart1.Series(strSeriesName).BorderWidth = 3
- Dim dtDateTime As DateTime
- Dim strTime As String
- For Each row As DataRow In dataTable.Rows
- dtDateTime = DateTime.Parse(row(0).ToString)
- strTime = Format(dtDateTime, "HH:mm")
- Me.Chart1.Series(strSeriesName).Points.AddXY(strTime, row(1).ToString)
- Next
- End If
- End Sub
Damit möchte ich die Gesamtleistung über den Zeitverlauf darstellen um Produktionsausfälle besser zu identifizieren. Das klappt soweit.
Nun habe ich mir gedacht, dass ich anhand der Steigung die Leistung mit anderen Tagen vergleichen könnte.
Dafür wollte ich Start und Endpunkte der TrendLinie auslesen, um damit die Steigung zu berechnen.
VB.NET-Quellcode
- Private Sub testSub()
- Me.Chart1.DataBind()
- With Chart1
- .Series.Add("Trend")
- .Series("Trend").ChartType = DataVisualization.Charting.SeriesChartType.Spline
- .Series("Trend").BorderWidth = 1
- .Series("Trend").BorderDashStyle = DataVisualization.Charting.ChartDashStyle.Dash
- .Series("Trend").Color = Color.DarkBlue
- .Series("Trend").IsVisibleInLegend = False
- ' Trend Linie einzeichnen
- .DataManipulator.FinancialFormula(DataVisualization.Charting.FinancialFormula.Forecasting, "Linear,1,false,false", .Series("Gesamt"), .Series("Trend"))
- End With
- Dim dpLetzterPunkt As DataPoint = Chart1.Series("Trend").Points(Chart1.Series("Trend").Points.Count - 1)
- MsgBox(dpLetzterPunkt.ToString)
- End Sub
Nun wird mir aber kein x-Wert bei dem ersten und letzten Punkt ausgegeben:
{x=0, y = 236,351}
Ich vermute, dass liegt daran, dass ich auf der x-Achse die Zeiten einfüge... Aber trotzdem muss es doch eine x-Koordinate auf dem Chart geben, mit der sich die Steigung berechnen lässt?
Oder gibt es hierzu eventuell einen anderen Ansatz?
Danke für eure Hilfestellung,
Grüße Jan