2008-09-13 7 views
1

Lorsque vous utilisez Zedgraph pour les lignes et que vous définissez IsSmooth sur true, les lignes sont bien courbées au lieu d'avoir des angles/angles durs.Lissage des lignes de graphique en Zedgraph sans «bosses»

Bien que cela semble beaucoup mieux pour la plupart des graphiques - à mon humble avis - il y a une petite prise. L'algorithme de lissage permet à la ligne de prendre un peu de «plongée» ou de «bosse» avant de monter ou descendre. Dans la plupart des cas, si le point de données est lisse, ce n'est pas un problème, mais si vos points de données vont de 0 à 15, le 'dive' fait passer la ligne sous l'axe des x, ce qui le rend Il semble qu'il y ait des points de données en dessous de zéro (ce qui n'est pas le cas).

Comment puis-je résoudre ce problème (prefably facilement;)

Répondre

3

Pas de réponse simple pour cela. Garder la tension proche de zéro sera votre solution la plus simple.

ZedGraph utilise le paramètre de tension DrawCurve de GDI pour appliquer la douceur, qui est probablement Hermite Interpolation. Vous pouvez essayer de mettre en œuvre votre propre interpolation cosinusaire, qui gardera les extrêmes locaux en raison de sa nature. Vous pouvez consulter ce lien pour voir pourquoi: http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

EDIT: Le site Web est arrêté. Voici une version mise en cache de la page: http://web.archive.org/web/20090920093601/http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

+0

+1 pour l'analyse, la solution proposée et la référence. –

+1

Je sais que c'est vieux, mais dans l'esprit de SO étant un Wiki - le lien est brisé. :) –

+0

Merci dav_i, j'ai ajouté un lien archivé qui devrait continuer à fonctionner. –

1

Vous pouvez essayer de modifier la propriété myCurve.Line.SmoothTension vers le haut ou vers le bas et voir si cela aide.

Questions connexes