Ich vermasse einige Systemleistungsdaten, um sie in einer Datenbank zu speichern. Aus diesen Datenpunkten zeichne ich Liniendiagramme im Zeitverlauf. In ihrer Natur sind diese Datenpunkte etwas laut, d. jeder einzelne Punkt weicht zumindest ein wenig vom lokalen Mittelwert ab. Wenn Sie das Liniendiagramm direkt von einem Punkt zum nächsten zeichnen, entstehen gezackte Graphen. In einem großen Zeitmaßstab wie> 10 Datenpunkten pro Pixel wird dieses Rauschen zu einem breiten gezackten Linienbereich komprimiert, der beispielsweise 20px hoch statt 1px wie in kleineren Maßstäben ist.Wie kann ich geglättete/abgerundete/gekrümmte Liniendiagramme zeichnen? (C#)
Ich habe über Linienglättung, Anti-Aliasing, Vereinfachung und all diese Dinge gelesen. Aber alles, was ich gefunden habe, scheint um etwas anderes zu gehen.
Ich brauche kein Anti-Aliasing, .NET macht das schon für mich, wenn ich die Linie auf dem Bildschirm zeichne.
Ich will keine Vereinfachung. Ich brauche die extremen Werte, zumindest die meisten.
Ich denke, es geht in Richtung Spline-Kurven, aber ich konnte nicht viele Beispielbilder finden, um zu bewerten, ob das beschriebene Ding was ich will. Ich fand jedoch ein hochwissenschaftliches Buch bei Google Books, voll mit halbseitenlangen Formeln, die ich jetzt nicht lesen wollte ...
Um Ihnen ein Beispiel zu geben, schauen Sie sich einfach den Systemmonitor von Linux/Gnome an Anwendung. Ich zeichne die aktuelle CPU/Speicher/Netzwerk-Nutzung mit einer geglätteten Linie. Das mag ein wenig vereinfacht sein, aber ich würde es versuchen und sehen, ob ich es optimieren kann.
Ich würde C# -Code bevorzugen, aber Algorithmen oder Code in anderen Sprachen ist auch in Ordnung, solange ich es ohne externe Referenzen nach C# portieren kann.
Ist Ihnen bekannt, dass Windows (und .net) ein integriertes Leistungsindikatorsystem haben? Ich möchte nur sicherstellen, dass Sie das Rad nicht neu erfinden (nicht sagen, dass es sich notwendigerweise auf Ihren Fall bezieht). –
Meine Daten werden auf einem Linux-Server gesammelt und bestehen aus einer Vielzahl verschiedener Quellen, für die ich anderen Code habe. Die Daten sollen zur Verwendung in einer Desktop- (interaktiven) oder Web-Anwendung oder möglicherweise per E-Mail verschickten Berichten unter der Mono-Laufzeit visualisiert werden. Die Entwicklung erfolgt mit Visual Studio unter Windows. – ygoe