vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Beispiel: Explorativer Zeitreihenchart 
Autor: Manfred X
Datum: 27.01.18 10:07

Public Class frmTimeSeries
 
    Dim cht As New System.Windows.Forms.DataVisualization.Charting.Chart _
        With {.Parent = Me, .Dock = DockStyle.Fill}
 
 
    'generische Klasse für Zeitreihenwert 
    Private Class TimeValue(Of T As iComparable)
        Implements IComparable(Of TimeValue(Of T))
 
        Private _value As T
        Private _time As DateTime
 
        Private _min, _max As T
 
        Public Sub New(time As DateTime, value As T)
            _time = time
            _value = value : _min = value : _max = value
        End Sub
 
        Public ReadOnly Property GetTime() As DateTime
            Get
                Return _time
            End Get
        End Property
 
        Public ReadOnly Property GetValue() As T
            Get
                Return _value
            End Get
        End Property
 
        Public Property Max() As T
            Set(value As T)
                _max = value
            End Set
            Get
                Return _max
            End Get
        End Property
 
        Public Property Min As T
            Set(value As T)
                _min = value
            End Set
            Get
                Return _min
            End Get
        End Property
 
 
 
        Public Function CompareTo(other As TimeValue(Of T)) As Integer _
            Implements System.IComparable(Of TimeValue(Of T)).CompareTo
            Return _value.CompareTo(other.GetValue)
        End Function
    End Class
 
 
    Dim timeseries As New List(Of TimeValue(Of Double))
 
 
    Private Sub CreateRandomSeries()
 
        Dim rndm As New Random(12345)
        Dim tim As New DateTime(2000, 1, 1)
        For i As Integer = 1 To 50000
            tim = tim.AddMinutes(1)
            timeseries.Add _
                (New TimeValue(Of Double)(tim, rndm.NextDouble + i * 0.000005))
        Next i
    End Sub
 
 
    Private Sub frmTimeSeries_Load(sender As System.Object, _
                    e As System.EventArgs) Handles MyBase.Load
        CreateRandomSeries()
        Dim params As List(Of TimeValue(Of Double)) = _
            CreateTimeSeriesParams(timeseries.Count \ 200)
 
        CreateChart(params)
    End Sub
 
 
    Private Function CreateTimeSeriesParams(stepp As Integer) _
        As List(Of TimeValue(Of Double))
 
        Dim params, vl As New List(Of TimeValue(Of Double))
            For i As Integer = stepp \ 2 To _
                (timeseries.Count - 1) - stepp \ 2 Step stepp
 
                vl.Clear()
                For k As Integer = i - stepp \ 2 To i + stepp \ 2
                    vl.Add(timeseries(k))
                Next k
 
                vl.Sort()
 
                'Anzeigeparameter (Zeiteintrag: evt. als Intervallmitte)
                params.Add(vl(stepp \ 2))
                params(params.Count - 1).Max = vl(stepp \ 4).GetValue
                params(params.Count - 1).Min = vl(stepp \ 4 * 3).GetValue
            Next i
        Return params
    End Function
 
 
    Private Sub CreateChart(params As List(Of TimeValue(Of Double)))
 
        cht.ChartAreas.Clear()
        cht.Series.Clear()
        cht.ChartAreas.Add("Base")
        With cht.Series
            .Add("Values") : .Add("min") : .Add("max")
        End With
        With cht.Series("Values")
            For i As Integer = 0 To params.Count - 1
                .Points.AddXY(params(i).GetTime, params(i).GetValue)
            Next i
            .ChartType = DataVisualization.Charting.SeriesChartType.Line
        End With
        With cht.Series("min")
            For i As Integer = 0 To params.Count - 1
                .Points.AddXY(params(i).GetTime, params(i).Min)
                .ChartType = DataVisualization.Charting.SeriesChartType.Line
            Next i
        End With
        With cht.Series("max")
            For i As Integer = 0 To params.Count - 1
                .Points.AddXY(params(i).GetTime, params(i).Max)
                .ChartType = DataVisualization.Charting.SeriesChartType.Line
            Next i
        End With
 
        With cht.ChartAreas("Base")
            .AxisX.IntervalType = _
              DataVisualization.Charting.DateTimeIntervalType.Minutes
 
            .AxisY.Minimum = -0.2
            .AxisY.Maximum = 1.2
        End With
    End Sub
 
End Class


Beitrag wurde zuletzt am 27.01.18 um 10:14:06 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Ansatz zur Realisierung Multi-Line-Chart1.444Dot22.01.18 11:07
Re: Ansatz zur Realisierung Multi-Line-Chart819Manfred X22.01.18 18:01
Re: Ansatz zur Realisierung Multi-Line-Chart791Dot23.01.18 16:12
Re: Ansatz zur Realisierung Multi-Line-Chart850Manfred X23.01.18 20:28
Re: Ansatz zur Realisierung Multi-Line-Chart786Franki25.01.18 03:41
Re: Ansatz zur Realisierung Multi-Line-Chart802Dot25.01.18 12:15
Re: Ansatz zur Realisierung Multi-Line-Chart773Manfred X25.01.18 14:01
Re: Ansatz zur Realisierung Multi-Line-Chart767Dot26.01.18 07:12
Re: Ansatz zur Realisierung Multi-Line-Chart765Manfred X26.01.18 08:09
Re: Ansatz zur Realisierung Multi-Line-Chart784Franki27.01.18 01:47
Beispiel: Explorativer Zeitreihenchart773Manfred X27.01.18 10:07
Re: Beispiel: Explorativer Zeitreihenchart770Manfred X27.01.18 11:31

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel