我想创建一个麦克风极点模式图,其范围为-20
(在中间),以+5
为步长5
。我找到了类似的代码,但没有任何内容允许比例为负
然后需要将多个模式添加到覆盖几个不同频率的图中,我有度值(0-360
)和相应的dB值(-25 - +5
)。
这是情节应该是什么样子(虽然尺度略有不同):
我找到的最接近的gnuplot是:How to get a radial(polar) plot using gnu plot?
也许这可以根据我的需要进行修改?
我还希望在情节的顶部而不是在右边找到0
度。
我是使用gnuplot的新手,所以我对它的代码并不是特别熟悉,因此我很难修改代码并取得很大的成功(到目前为止)。
答案 0 :(得分:1)
所以你想绘制一个极性函数,例如: r(theta) = 1 + sin(theta)
。
绘制函数非常简单,只需执行
set polar
plot 1+sin(t)
可以使用
绘制简单的极坐标网格set grid polar
但是raxis
和rtics
的位置与您想要的位置不同。指定自定义标签没有问题。但不支持角度标签,因此您需要手动设置它们。并且必须取消边框和其他轴和抽动。
要获得与您显示的完全相同的图像,请使用以下脚本:
set terminal pngcairo size 700,600 font ',10'
set output 'cardioid.png'
set angle degree
set polar
set size ratio 1
set tmargin 3
set bmargin 3
set style line 11 lc rgb 'gray80' lt -1
set grid polar ls 11
unset border
unset xtics
unset ytics
r=1
set rrange [0:r]
set rtics 0.166 format '' scale 0
set label '0°' center at first 0, first r*1.05
set label '180°' center at first 0, first -r*1.05
set label '90°' right at first -r*1.05, 0
set label '270°' left at first r*1.05, 0
set for [i=1:5] label at first r*0.02, first r*((i/6.0) + 0.03) sprintf("%d dB", -30+(i*5))
unset raxis
plot 0.5*(1+sin(t)) linewidth 2 t ''
结果:
包括标签的一些偏移,这取决于终端,画布大小和字体大小。所以你可能需要调整它们。
我必须稍微增加顶部和底部边距(此处为3个字符的高度),以便为角度标签留出足够的空间。它们不包括在自动边距计算中,因为它不属于轴。
答案 1 :(得分:1)
不幸的是,克里斯托夫的回答是错误的。
如果您检查绘图曲线穿过5db圆圈的位置,则可以看到。
应该绘制的是
20*log10(A+B*cos(t))
其中A+B = 1
和A - B
确定(名义)方向性模式。
第一张图似乎适用于A=B=0.5
,这是一种心形图案。