I'm using software that uses Gnuplot language to plot some data, but I've never used Gnuplot before.
So I was trying to place labels and rectangles in a way that created a nice and readable text, which wasn't bad (as you can see with the number 182 in the image below), but I wanted to learn how to rotate the rectangle and label so that they line up with the white line.
(I can't post images, but it's like that in
)
I've already learned to rotate the label (as you can see the number 171), but apparently, it doesn't work the same way with the object.
# 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"
The important part of my code that sets a rectangle and a label is here below:
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
So how do I rotate the rect object? And if it's not possible, is there another way to do this (other than having to manually set a polygon)?
CodePudding user response:
Check the following example and help labels.
You can create a datablock and add your labels and plot them rotated and boxed together with your map.
Edit: ...forgot the semitransparent boxes. You need to play with the alpha channel, i.e. 0xAARRGGBB.
Code:
### 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
Result:

