可以在 gnuplot 中旋转对象吗?

It's possible to rotate an object in gnuplot?

我正在使用使用 Gnuplot 语言绘制一些数据的软件,但我以前从未使用过 Gnuplot。

所以我试图以一种创建漂亮且可读文本的方式放置标签和矩形,这还不错(如下图中的数字 182 所示),但我想学习如何旋转矩形和标签,使它们与白线对齐。

(我无法 post 图片,但在 this link 中是这样的 现在,它看起来像:

)

我已经学会了旋转标签(你可以看到数字 171),但显然,它与对象的工作方式不同。

# setting the label and rotating it works
set label 1 "TEXT" at 10, 20 center rotate by 30 front
# setting the object works
set object 1 rect center 10,20 size 1,2 front
# But this doesn't work
set object 1 rect center 10,20 size 1,2 rotate by 30 front
# this line return the error message "Unrecognized or duplicate option"

我的代码中设置矩形和标签的重要部分如下:

x1 = 2979
x2 = 3140
y1 = -225
y2 = -168
ang = 19.9275
h = 30
w = 60
# set object 1 rect center (x1+x2)/2,(y1+y2)/2 size w,h rotate by ang front fillcolor "black" fillstyle transparent solid 0.5 noborder
set object 1 rect center (x1+x2)/2,(y1+y2)/2 size w,h front fillcolor "black" fillstyle transparent solid 0.5 noborder
set label 1 sprintf("{/:Bold %1.0f}",sqrt((x2-x1)**2 + (y2-y1)**2)) at (x1+x2)/2,(y1+y2)/2 center rotate by ang front tc rgb "white"
set arrow from x1,y1 to x2,y2 heads size 10,90 front linecolor rgb "white" linewidth 2.5 dashtype 6

那么如何旋转矩形对象呢?如果不可能,是否有其他方法可以做到这一点(除了必须手动设置多边形)?

检查以下示例并help labels。 您可以创建一个数据块并添加您的标签并将它们与地图一起旋转和装箱。

编辑: ...忘记了半透明框。您需要使用 alpha 通道,即 0xAARRGGBB.

代码:

### boxed semitransparent text labels
reset session

# create some background test data
f(x,y)=(sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x))*3+15
set samples 51
set isosamples 51
set table $Data
    splot [0:600][0:600] f(x/60.,y/60.)
unset table

$myLabels <<EOD
# text x   y   a
171    300   300   45
182    100   500   90
197    500   400   60
333    400   100  -30
EOD

set style fill transparent solid 1.0 noborder
set style textbox opaque fc rgb 0xaaffffff noborder
set angle degrees
set key noautotitle

plot $Data u 1:2:3 with image palette,\
     $myLabels u 2:3:1:4 w labels rotate var boxed font ",24"
### end of code

结果: