2016-07-27 10 views
2

Ich mag ein Etikett drehen, um es den Pfeil durchWie ermittelt man das Seitenverhältnis der Achsen in gnuplot?

Set Pfeil 1 von x, y bis x + dx, y + dy

Zur Berechnung der Winkel dieses Pfeils in der Leinwand definierte parallel auszurichten Koordinatensystem I die verschiedenen Skalen von x und y-Achse berücksichtigen, müssen:

theta = atan (ratioxy * dy/dx) * 180/pi,

wo ratioxy das Verhältnis der Längen ist Einheit, in y- und x-Achsen. Durch die unter Verwendung dieses Verhältnisses kann ich das richtig gedreht Text als

Set Label 1 „gedrehter Text“ bei x, y links drehen durch Theta

schreiben Also, meine Frage ist:

Wie kann ich die bestimmen Verhältnis zwischen der Länge einer Einheit, gemessen in der y- und x-Achse?

Antwort

2

einen Kommentar von @ Christoph Nach enthüllt show var GPVAL_TERM interessant durch gnuplot nach einem Grundstück Variablen:

GPVAL_TERM_XMIN = 440 
GPVAL_TERM_XMAX = 6159 
GPVAL_TERM_YMIN = 300 
GPVAL_TERM_YMAX = 4639 
GPVAL_TERM_XSIZE = 6400 
GPVAL_TERM_YSIZE = 4800 
GPVAL_TERM_SCALE = 1 

Also das Verhältnis plotratio=(GPVAL_TERM_XMAX-GPVAL_TERM_XMIN)/(GPVAL_TERM_YMAX-GPVAL_TERM_YMIN) gibt das Seitenverhältnis Plotten Zone. Sie müssen auch das Verhältnis Ihrer Zeichenbereiche haben, das ist rangeratio=(GPVAL_XMAX-GPVAL_XMIN)/(GPVAL_YMAX-GPVAL_YMIN). Das gewünschte Verhältnis ist ratioxy=rangeratio/plotratio

Um die Variablen setzen zu können, müssen Sie einen ersten Durchlauf für gnuplot haben. Verwenden Sie hierzu ein Makro:

MYPLOT='"file.dat" using (whatever(column(1)):(function(column(2))) with lines' 
stats @MYPLOT 
plotratio=(GPVAL_TERM_XMAX-GPVAL_TERM_XMIN)/(GPVAL_TERM_YMAX-GPVAL_TERM_YMIN) 
rangeratio=(GPVAL_X_MAX-GPVAL_X_MIN)/(GPVAL_Y_MAX-GPVAL_Y_MIN) 
set arrow 1 from x,y to x+dx,y+dy 
theta = atan2(rangeratio/plotratio*dy,dx)*180/pi 
set label 1 "Rotated text" at x,y left rotate by theta offset sin(theta),cos(theta) 
plot @MYPLOT 

atan2 können Sie dx=0 haben. Die offset ermöglicht es, den Text über dem Pfeil und nicht über den Pfeil zu haben.

Verwandte Themen