Hi all,
I’m starting to integrate live data plotting using WebChart and so far it looks fantastic. I’m trying to figure out a way to ‘fix’ the axis of my plot though as at the moment they dynamically scale with data input values.
Looking at charts.org/docs/latest/axes it appears it’s possible but I’m not sure how…
could you remove old datapoints?
Not really. It’s a dynamic plot and I’d prefer not to have the data jumping around……
Hi all.
Still stuck in this one. In addition, I also have a bug that when I update the plot around every 500ms or so that the entire control disappears after about 45 seconds. Nothing is visible. You can then see a flash of the control very few seconds. Everything else on the window is there still.
thats how i update my chart
Public Sub Chart(start As DateTime, interval As DateInterval, minmax As Boolean)
System.DebugLog CurrentMethodName
Chart1.RemoveAllDatasets
Chart1.RemoveAllLabels
Chart2.RemoveAllDatasets
Chart2.RemoveAllLabels
'------------------------------------------
Var db As New Module1.DB
Call db.Connect
Var d2 As DateTime = start
Var d1 As DateTime = d2 - interval 'zurück
// Second set of data
Var data1() As Double
Var data2() As Double
Var data3() As Double
Var data4() As Double
Var data5() As Double
Var data6() As Double
Var data7() As Double
For d As Integer = 1 To Chart1.Width / 24.0
Chart1.AddLabel d1.ToString(DateTime.FormatStyles.Medium,DateTime.FormatStyles.Short)
Chart2.AddLabel d1.ToString(DateTime.FormatStyles.Medium,DateTime.FormatStyles.Short)
Var s1 As Double = d1.SecondsFrom1970
Var s2 As Double = d2.SecondsFrom1970
Var rows As RowSet = db.SelectSQL("Select avg(VTIst) as VTIst, max(VTIst) as VTIstMax, min(VTIst) as VTIstMin, avg(VTSoll) as VTSoll, avg(AussenTemperatur) as AussenTemperatur, min(AussenTemperatur) as AussenTemperaturMin, max(AussenTemperatur) as AussenTemperaturMax From Zustand Where DateTime >=? and DateTime <= ?",s1,s2)
While Not rows.AfterLastRow
data1.Add(rows.Column("VTSoll").DoubleValue)
data2.Add(rows.Column("VTIst").DoubleValue)
data3.Add(rows.Column("AussenTemperatur").DoubleValue)
data4.Add(rows.Column("AussenTemperaturMin").DoubleValue)
data5.Add(rows.Column("AussenTemperaturMax").DoubleValue)
data6.Add(rows.Column("VTIstMax").DoubleValue)
data7.Add(rows.Column("VTIstMin").DoubleValue)
rows.MoveToNextRow
Wend
d1 = d1 - interval
d2 = d2 - interval
Next
'------------------------------------------
Var myset1 As New WebChartLinearDataset("VT Soll °C", &cFF0000, False, data1)
myset1.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart1.AddDataset(myset1)
Var myset2 As New WebChartLinearDataset("VT Ist °C", &cFF0000, True, data2)
myset2.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart1.AddDataset(myset2)
If minmax = True Then
Var myset6 As New WebChartLinearDataset("VT Ist Max °C", &c808080, False, data6)
myset6.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart1.AddDataset(myset6)
Var myset7 As New WebChartLinearDataset("VT Ist Min °C", &c808080, False, data7)
myset7.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart1.AddDataset(myset7)
End If
Var myset3 As New WebChartLinearDataset("Aussen °C", &c404040, False, data3)
myset3.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart2.AddDataset(myset3)
If minmax = True Then
Var myset4 As New WebChartLinearDataset("Aussen °C Min.", &c808080, False, data4)
myset4.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart2.AddDataset(myset4)
Var myset5 As New WebChartLinearDataset("Aussen °C Max.", &c808080, False, data5)
myset5.ChartType = WebChartLinearDataset.ChartTypes.Line
Chart2.AddDataset(myset5)
End If
'------------------------------------------
db.Close
'------------------------------------------
End Sub
Public Sub Refresh()
System.DebugLog CurrentMethodName
Var interval As DateInterval = SelectInterval.RowTagAt(SelectInterval.SelectedRowIndex)
Var start As DateTime
If interval.Hours <=4 Then
start = New DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,DateTime.Now.Hour,0,0)
Else
start = New DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,0,0,0)
End If
Var minmax As Boolean = CheckboxMinMax.Value
Chart(start, interval, minmax)
End Sub
SelectInterval.RemoveAllRows
SelectInterval.AddRow("5 Min.",New DateInterval(0, 0, 0, 0, 5))
SelectInterval.AddRow("15 Min.",New DateInterval(0, 0, 0, 0, 15))
SelectInterval.AddRow("30 Min.",New DateInterval(0, 0, 0, 0, 30))
SelectInterval.AddRow("1 Std.",New DateInterval(0, 0, 0, 1))
SelectInterval.AddRow("2 Std.",New DateInterval(0, 0, 0, 2))
SelectInterval.AddRow("4 Std.",New DateInterval(0, 0, 0, 4))
SelectInterval.AddRow("1 Tag",New DateInterval(0, 0, 0, 24))
SelectInterval.AddRow("7 Tage (Woche)",New DateInterval(0, 0, 0, 24.0 * 7.0))
SelectInterval.AddRow("4,3 x 7 Tage (Monat)",New DateInterval(0, 0, 0, 24.0 * 7.0 * 4.3))
SelectInterval.SelectedRowIndex = 5
Have you looked at the OverrideOptions event?