我想旋转标签使其与
定义的箭头平行将箭头1从x,y设置为x + dx,y + dy
要计算画布坐标系中此箭头的角度,我需要考虑x和y轴的不同比例:
theta = atan(ratioxy * dy / dx)* 180 / pi,
其中ratioxy是在y和x轴上的一个整数的长度的比率。通过使用此比率,我可以将正确旋转的文本写为
在x处设置标签1“旋转文本”,向左旋转θ
所以,我的问题是:
如何确定在y轴和x轴上测量的一个单位长度之间的比率?
答案 0 :(得分: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=0
。 offset
允许将文字放在箭头上方而不是横跨它。