1

我想创建一个麦克风极坐标图,其刻度为-20(中心)+55. 我发现了类似的代码,但没有任何东西允许比例为负。
然后需要将多个模式添加到覆盖几个不同频率的图中,我有度值 ( 0-360) 和相应的 dB 值 ( -25 - +5)。

这就是情节的样子(尽管比例略有不同):

polar_pattern_plot

我发现的最接近的 gnuplot 在这里:如何使用 gnu plot 获得径向(极坐标)图?

也许这可以修改以满足我的需要?

我还希望0在图的顶部而不是在右侧找到度数。

我是使用 gnuplot 的新手,所以我对它的代码不是特别熟悉,因此我很难成功地修改代码(到目前为止)。

4

2 回答 2

1

所以你想绘制一个极坐标函数,例如r(theta) = 1 + sin(theta)

绘制函数很容易,只需执行

set polar
plot 1+sin(t)

可以绘制一个简单的极坐标网格

set grid polar

但这raxisrtics您想要的位置不同。指定自定义标签没有问题。但不支持角度标签,因此您需要手动设置它们。并且必须取消设置边界和其他轴和抽动。

要获得与您显示的完全相同的图像,请使用以下脚本:

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 个字符高度),以便为角度标签留出足够的空间。它们不包含在自动边距计算中,因为它们不属于某个轴。

于 2013-09-27T19:58:56.850 回答
1

不幸的是,克里斯托夫的回答是错误的。

如果您检查绘图曲线与 5db 圆相交的位置,您会看到这一点。

应该绘制的是

20*log10(A+B*cos(t)) 

其中A+B = 1A - B确定(标称)方向性模式。

第一张图似乎是为了A=B=0.5形成心形图案。

于 2016-07-18T14:26:41.683 回答