2016-07-27 96 views
2

我想旋轉一個標籤,使其平行於由如何確定gnuplot中座標軸的長寬比?

集定義的箭頭從X箭頭1,Y到X + DX,Y + DY

爲了計算此箭頭的角度在畫布座標系我需要考慮到x的不同尺度和y軸:

THETA = ATAN(ratioxy * DY/DX)* 180/PI,

其中ratioxy是一個的長度的比統一,在y和x軸。通過使用這個比例,我可以寫的THETA

的正常旋轉文本

集標籤1「旋轉文本」在X,Y左旋轉所以,我的問題是:

我如何確定在y軸和x軸測量的一個單位的長度之間的ratioxy?

回答

2

繼@Christoph評論,show var GPVAL_TERM透着陰謀後gnuplot設置有趣的變量:

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 

所以比plotratio=(GPVAL_TERM_XMAX-GPVAL_TERM_XMIN)/(GPVAL_TERM_YMAX-GPVAL_TERM_YMIN)給人的繪圖區的縱橫比。您還需要有您的繪圖範圍的比例,即rangeratio=(GPVAL_XMAX-GPVAL_XMIN)/(GPVAL_YMAX-GPVAL_YMIN)。 你想要的比率是ratioxy=rangeratio/plotratio

爲了讓變量設置,你需要第一次通過gnuplot。爲此,使用宏:

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可以讓你有dx=0offset允許在箭頭上方顯示文本,而不是穿過它。