2008-09-13 6 views
1

Wenn Sie Zedgraph für Liniendiagramme verwenden und IsSmooth auf true setzen, sind die Linien schön gekrümmt, anstatt harte Ecken/Winkel.Glättung von Zedgraph-Liniendiagrammen ohne 'Beulen'

Während dies für die meisten Graphen viel besser aussieht - meiner bescheidenen Meinung nach - gibt es einen kleinen Haken. Der Glättungsalgorithmus lässt die Linie ein wenig "tauchen" oder "stoßen", bevor sie nach oben oder unten geht. Wenn der Datenpunkt selbst glatt ist, ist dies in den meisten Fällen kein Problem, aber wenn Ihre Datenpunkte von 0 bis 15 gehen, wird die Linie unter der X-Achse durch den "Dive" verschoben scheint, als ob es einige Datenpunkte unter Null gibt (was nicht der Fall ist).

Wie kann ich dieses Problem beheben (prefably leicht;)

Antwort

3

Keine einfache Antwort dafür. Halten Sie die Spannung in der Nähe von Null wird Ihre einfachste Lösung sein.

ZedGraph verwendet den DrawCurve-Spannungsparameter von GDI, um Glätte anzuwenden, die wahrscheinlich Hermite-Interpolation ist. Sie können versuchen, Ihre eigene Cosinus-Interpolation zu implementieren, die lokale Extreme aufgrund ihrer Natur bewahrt. Sie können auf den folgenden Link sehen, warum: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

EDIT: Website ist down. Hier ist eine zwischengespeicherte Version der Seite: http://web.archive.org/web/20090920093601/http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

+0

+1 für die Analyse, vorgeschlagene Lösung und Referenz. –

+1

Ich weiß, das ist alt, aber im Sinne von SO ist ein Wiki - die Verbindung ist gebrochen. :) –

+0

Danke dav_i, ich habe einen archivierten Link hinzugefügt, der weiter funktionieren soll. –

1

Sie könnten versuchen, die myCurve.Line.SmoothTension Eigenschaft nach oben oder nach unten und sehen zu ändern, wenn das hilft.