在没有 rtics 的情况下将 gnuplot raxis 标签旋转 45 度

rotate the gnuplot raxis label to 45 degrees without rtics

我在 Gnuplot 中有一个极坐标图

set polar
set angles degrees
unset xtics
unset ytics
unset raxis
set ttics 0,30
set grid polar linestyle 1 dashtype 2 linecolor rgb 'grey'
set samples 200, 200
unset border

set xrange [-0.51:0.51]
set yrange [-0.51:0.51]
set size square
unset key

plot sin(2*t)*cos(2*t)

给出以下输出:

然而,

  1. 我希望 rlabels(0、0.1、0.2 等)呈 45 度角,而不是将它们放置在 x 轴上,并且
  2. 不应该有 rtics

任何帮助将不胜感激。

要删除 rtics,请执行 set rtics scale 0

您可以设置极坐标图的起始角度(检查help theta),但是,只能设置为{right|top|left|bottom}而不是45°,但这仍然对您没有帮助。 因此,您可能必须“手动”设置标签。也许有一种我不知道的自动方式。检查以下示例。

代码:

### set rtics on 45° "axis"
reset session

set polar
set angles degrees
unset xtics
unset ytics
unset raxis
set ttics 0,30
set grid polar linestyle 1 dashtype 2 linecolor rgb 'grey'
set samples 200, 200
unset border

set xrange [-0.51:0.51]
set yrange [-0.51:0.51]
set size square
unset key
set rtics scale 0
set format r ""

myRTics = "0.1 0.2 0.3 0.4 0.5"
do for [i=1:words(myRTics)] {
    r = word(myRTics,i)
    set label i sprintf("%s",r) at r*cos(45),r*sin(45) center
}
plot sin(2*t)*cos(2*t)
### end of code

结果:

除了@theozh 的出色回答之外,我意识到我可以通过提供标签的开始、结束和增量来动态生成标签。所以而不是

myRTics = "0.1 0.2 0.3 0.4 0.5"
do for [i=1:words(myRTics)] {
    r = word(myRTics,i)
    set label i sprintf("%s",r) at r*cos(45),r*sin(45) center
}

我会写的

rangle = 45
rstart = 0.1 ; rend = 0.5 ; rinc = 0.1 ;
n = floor((rend-rstart)/rinc) + 1

do for [i=1:n] {
    r = rstart + (i-1)*rinc
    set label i sprintf("%g",r) at r*cos(rangle),r*sin(rangle) center
}

其余部分将由@theozh 回答。输出没有改变。

我有点惊讶 Gnuplot 没有任何内置方法来处理这个问题。