Ich aktualisiere eine VB6-Anwendung auf .NET Windows Forms und suche nach einer Diagrammbibliothek, die eines von zwei Dingen tun kann:
Diese Anwendung nimmt Daten von einem seriellen Gerät und speichert sie in einfachen CSV- oder anderen Formatdateien. Die Daten werden nicht in einer Datenbank gespeichert, sodass dynamische Datenfunktionen, die die Datenbank abfragen, nicht funktionieren werden (ich habe diese in Websteuerelementen gesehen, habe aber bei der Suche nach einer Winforms-Variante im Allgemeinen jede Erwähnung einer Datenbank außer Acht gelassen).
Der Kunde möchte gelegentlich in das Diagramm hineinzoomen, um feinkörnige Werte anzuzeigen. Dies kann mit dem Vanilla Windows Forms Chart-Steuerelement erfolgen, aber das Laden so vieler Daten ist zeitaufwändig (etwa 30 Sekunden auf meinem Entwicklungscomputer) und die Zoomfunktion reagiert ziemlich langsam. Ich habe versucht, die Aggregation über das Steuerelement zu untersuchen, aber es sieht so aus, als müsste ich mein eigenes Aggregationssystem codieren. Ich habe nicht wirklich die Zeit, das zu tun. Kennt jemand eine Diagrammbibliothek, die X/Y-Liniendiagramme mit großen Datenmengen erstellen kann und ziemlich reaktionsschnell bleibt?
Sie können Ihr eigenes Diagrammsteuerelement erstellen. Das Grundprinzip ist die Verwendung der Steigungspunktform. Sie können meinen Code kostenlos verwenden: http://www.codeproject.com/Articles/14327/Drawing-medical-waveforms-using-a-Windows-Mobile
Ein paar Anregungen aus meiner Erfahrung.
Laden Sie nicht alle Daten auf einmal. Erstellen Sie eine Art Benutzererfahrung, z. B. einen Schieberegler, um den nächsten Datensatz anzufordern.
Verwenden Sie Fast Fourier Transform (FFT) https://en.wikipedia.org/wiki/Fast_Fourier_transform , da Sie Millionen von Werten verarbeiten müssen, für die Sie die Häufigkeit von Samples finden möchten (meinen Sie das mit Aggregation von Samples?).
Ich habe DevExpress XTraCharts . Obwohl ich persönlich noch nicht so viele Datenpunkte verwendet habe, wird es mit einer "großen Datenquelle"-Demoanwendung geliefert, die 1.000.000 Punkte verwendet, um zu demonstrieren, wie schnell es ist, und es ist schnell auf meinem alten Intel i5-Computer.
Es ist ein kommerzielles Produkt, das bei 900 $ beginnt und viel mehr enthält, als Sie brauchen. Kleinere Teile wie einzelne Bedienelemente kann man leider nicht kaufen.
Es benötigt keine SQL-Datenquelle, Sie können einfache .NET-Objekte verwenden und erfordert nur minimale Programmierung, wenn die Eigenschaften öffentlich sind.
Wenn Sie eine Min/Max-Aggregation durchführen möchten, wird dies ebenfalls unterstützt:
MindFusion hat ein WinForms-Steuerelement , das kürzlich neu gestaltet wurde und die Leistung ist sehr gut. Es wird entweder als einzelnes Produkt oder in einer Packung verkauft.
LightningChart .NET ist der Leistungsführer bei WinForms-Diagrammen. Die Visualisierung von Millionen von Datenpunkten ist mühelos, Scroll- und Sweeping-Modi in Echtzeit sind integriert, und Daten werden sofort aus riesigen Datensätzen geladen, und ein Downsampling ist nicht erforderlich, die Daten werden in voller Qualität dargestellt. Das Diagramm kann im Extremfall über 10 Milliarden Datenpunkte visualisieren.
Da LightningChart ein echtes WinForms-Steuerelement ist, können Sie es im WinForms-Designer hinzufügen und die Eigenschaften mit einem Eigenschaftsraster festlegen.
Dieses Diagramm verfügt über eine GPU-Beschleunigung mit DirectX 11- und DirectX 9-Engines, und ein Großteil der Datenverarbeitung wird auf die GPU ausgelagert.
An der Entwicklung des Charts bin ich seit über 10 Jahren beteiligt, die hohen Leistungsanforderungen kommen aus der Medizintechnik und Industrieautomation.
SciCharts war die Antwort. Ich konnte Millionen von Datenpunkten fast ohne erkennbare Verzögerung in eine Tabelle laden, und sie zoomt und schwenkt reibungslos. Die App, in die ich es eingefügt habe, ist eine Winforms-App, daher musste ich das Diagramm in einem WPF-Fenster hosten, das von Windows Forms aufgerufen und verwaltet wird. Abgesehen davon hat Sci Charts genau das Richtige für Sie.
Synetech
CodeWarrior
CodeWarrior