0
votes

Option ellipse étirée Gnuplot par angle

Je veux dessiner une ellipse avec gnuplot. Il doit être légèrement incliné, j'utilise donc l'option angle. Mais l'angle joue avec la taille de l'ellipse. Est-ce que je me trompe dans le docu?

Consultez l'exemple suivant:

set output "test.pdf"
set obj ellipse center 5,0.5 size 4,0.2 angle 20
set xrange [0:10]
plot sin(x)

Les deux png ajoutés montrent mes résultats. J'utilise la version 5.2.8. Aucun angle Avec angle


0 commentaires

3 Réponses :


0
votes

Edit: La solution d'Ethan est certainement la voie à suivre. Gardez simplement à l'esprit que si vous n'avez pas set size ratio -1 , une ligne, par exemple comme plot x n'apparaîtra pas dans un angle de 45 ° par rapport à l'axe x.

Probablement, la solution la plus simple serait de set size ratio -1 pour avoir la même échelle pour les axes x et y. Si vous avez besoin d'une échelle différente, il devrait y avoir une solution différente.

Code:

### draw tilted ellipse with same proportions
reset session

set size ratio -1
set obj 1 ellipse center 5,0.5 size 4,0.2 angle 0  fc "red"
set obj 2 ellipse center 5,0.5 size 4,0.2 angle 20 fc "green"
set obj 3 ellipse center 5,0.5 size 4,0.2 angle 45 fc "blue"
set obj 5 ellipse center 5,0.5 size 4,0.2 angle 90 fc "magenta"

set xrange [0:10]
set yrange [-3:3]
plot sin(x)
### end of code

Résultat:

entrez la description de l'image ici


1 commentaires

Merci pour le conseil. L'ajout de la ligne de rapport entraîne la réduction de l'axe y à un dixième de la taille de l'écran. Je peux résoudre ce problème en définissant moi-même une année. Mais j'aimerais utiliser la mise à l'échelle automatique.



1
votes

Si vous voulez que les proportions de l'ellipse restent constantes après la rotation, vous devez donner les diamètres majeur et mineur dans les mêmes unités, par exemple "unités xx" ou "unités yy". Ici, je définis l'ellipse en termes d'un rapport 4: 1 de grand: petit axe en utilisant les coordonnées x.

set obj 1 ellipse center 5,0.5 size 4,1 fs empty bo lc "blue"  angle 0   units xx
set obj 2 ellipse center 5,0.5 size 4,1 fs empty bo lc "red"   angle 20  units xx
set obj 3 ellipse center 5,0.5 size 4,1 fs empty bo lc "green" angle 40  units xx
set xrange [0:10]
plot sin(x)

entrez la description de l'image ici


1 commentaires

Merci beaucoup, cette solution convient le mieux à ma situation.



0
votes

Si la sortie vers un fichier factice est autorisée, que diriez-vous de la solution suivante.

set output "/dev/null"

Dans ce script, le rapport de la longueur de l'unité visible entre les axes x et y est calculé à l'aide de la variable GPVAL_ * déterminée par le tracé factice. En le multipliant par l'axe vertical de l'ellipse et en utilisant «unité xx» comme la réponse d'Ethan, vous obtiendrez peut-être le chiffre souhaité.

Si vous êtes sur un système UNIX (-like), remplacez 'set output "dummy.pdf"' par,

set terminal pdf size 10cm,10cm

set xrange [0:10]

# dummy plotting
set output "dummy.pdf"
plot sin(x)

factor =  real(GPVAL_X_MAX - GPVAL_X_MIN)/real(GPVAL_Y_MAX-GPVAL_Y_MIN) \
        * real(GPVAL_TERM_YMAX - GPVAL_TERM_YMIN)/real(GPVAL_TERM_XMAX - GPVAL_TERM_XMIN)

# real plotting
set output "test.pdf"
set obj ellipse center 5,0.5 size 4,factor*0.2 angle 20 unit xx
replot

entrez la description de l'image ici


0 commentaires