2017-08-13 2 views
1

Je ne reçois pas de courbe lisse sur gnuplot.Ne pas obtenir une courbe régulière avec gnuplot

Ceci est mon code:

set style line 3 lc rgb '#09ad00' lt 1 lw 1.5 #green 
set style line 1 lc rgb '#0060ad' lt 1 lw 2 #blue 
set style line 2 lc rgb '#dd181f' lt 1 lw 2 #red 
plot [-1:1] f1(x) with line ls 3,f2(x) with line ls 1,f1(x)+f2(x) with line ls 2 

Je reçois ce complot

zig-zag curve no smooth curve

alors que je me attends à ce type de courbe

smooth curve no zig-zag curve

+0

Ajouter une ligne 'set samples 200' –

Répondre

1

Vous n'ai pas montré ce que vous Les fonctions r sont, mais c'est presque certainement un problème d'échantillonnage. Gnuplot ne dessine pas vraiment de courbes pour les fonctions - il calcule réellement les fonctions à plusieurs points et les relie avec des lignes droites, de manière similaire à ce qui se passerait si vous traçiez un fichier de données. Le nombre de points qu'il calcule est paramétrable par l'utilisateur.

Supposons que je fais plot sin(x) et voir ceci: Jagged sine curve

Ici, le taux d'échantillonnage est réglé assez faible. Nous pouvons regarder les différents points afin de voir ce qui se passe.

Jagged sine curve with points

Afin d'améliorer ce, je dois augmenter le taux d'échantillonnage en utilisant la commande set samples ?. La valeur par défaut est 100 (dans le patch 5 niveau 6). Selon la rapidité avec laquelle la fonction change, des valeurs plus élevées peuvent être nécessaires. Je le règle habituellement autour de 1000 avec set samples 1000. Cela change le graphique pour

Smooth sine curve

qui produit une courbe lisse beaucoup plus agréable. Encore une fois, c'est juste un tas de points reliés par des lignes droites, mais quand il y en a beaucoup, cela ressemble à une courbe continue et lisse.

Nous pouvons regarder les différents points à nouveau (en utilisant un taux d'échantillonnage de 100 en 1000 est trop pour voir clairement les points)

Smooth sine curve with points

Nous pouvons voir ici qu'il n'y a pas beaucoup de différence entre le graphique avec 1000 points et 100 points. Dans le cas d'une courbe sinusoïdale, 100 est suffisant pour voir un graphique lisse, mais avec une courbe de changement plus rapide, nous pouvons avoir besoin de plus.

La commande set samples prend (facultativement) deux valeurs, mais la deuxième valeur est uniquement utilisée pour les tracés 3d. Vous pouvez en savoir plus avec la commande help samples.

+1

Le nombre d'échantillons par défaut de Gnuplot (relativement bas) est probablement lié à l'âge du programme (lire les ordinateurs SLOW). Je recommande de placer une commande 'set samples 1001' dans' $ HOME/.gnuplot', aussi, en règle générale, le nombre d'échantillons pourrait se situer autour de '30 * nombre de maxima'. Très bonne réponse – gboffi

+0

@gboffi Je n'ai pas regardé les valeurs historiques pour voir si cette version par défaut a changé depuis les versions précédentes, mais oui, vous avez presque certainement raison de savoir pourquoi il est si bas. – Matthew

+1

J'étais là, dans _historical_ fois c'est ... et il était 100 ... – gboffi