Как ограничить диапазон gnuplot polar до 180 градусов?

Я пытаюсь использовать gnuplot для построения внеосевого отклика громкоговорителя в диапазоне +/- 90 градусов. У меня это работает хорошо, почти полностью в результате создания полярного микрофона график шаблонов в gnuplot

Я хотел бы расширить это, чтобы он представлял только диапазон 180 вперед, однако я не знаю, как это сделать, и был бы признателен за некоторые указатели.

Это мой код до сих пор

gnuplot <<EOF
set terminal pngcairo size ${WIDTH}/2,${HEIGHT}/2 font ',10'

set polar
set angle degrees
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

set xrange [-30:30]
set yrange [-30:30]
set key

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 '+90°' 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

set key outside top right
set style line 11 lw 2 

set output '${PREFIX}_polar.png'
set multiplot layout 1,2 title "Circular Polar Response"
set title "Normalised"
plot '${PREFIX}_norm_polar_1000.txt' t '1k'  w lp ls 11 lt 1 pt -1 , \
     '${PREFIX}_norm_polar_2000.txt' t '2k'  w lp ls 11 lt 2 pt -1 , \
     '${PREFIX}_norm_polar_4000.txt' t '4k'  w lp ls 11 lt 3 pt -1 , \
     '${PREFIX}_norm_polar_8000.txt' t '8k'  w lp ls 11 lt 4 pt -1 , \
     '${PREFIX}_norm_polar_16000.txt' t '16k' w lp ls 11 lt 5 pt -1 
set title "Unnormalised"
plot '${PREFIX}_polar_1000.txt' t '1k'  w lp ls 11 lt 1 pt -1 , \
     '${PREFIX}_polar_2000.txt' t '2k'  w lp ls 11 lt 2 pt -1 , \
     '${PREFIX}_polar_4000.txt' t '4k'  w lp ls 11 lt 3 pt -1 , \
     '${PREFIX}_polar_8000.txt' t '8k'  w lp ls 11 lt 4 pt -1 , \
     '${PREFIX}_polar_16000.txt' t '16k' w lp ls 11 lt 5 pt -1 

EOF

результат

полярный

данные выглядят так (это строка 1k на картинке примера)

180 0.657067
172.5 0.6832
165 0.717767
157.5 0.7461
150 0.7747
142.5 0.806167
135 0.835633
127.5 0.865167
120 0.890533
112.5 0.918133
105 0.929633
97.5 0.9566
90 0.9632
82.5 0.9566
75 0.929633
67.5 0.918133
60 0.890533
52.5 0.865167
45 0.835633
37.5 0.806167
30 0.7747
22.5 0.7461
15 0.717767
7.5 0.6832
0 0.657067

person Matt    schedule 12.02.2015    source источник
comment
Я думал, что это сработает, хотя на сюжет это не влияет.   -  person Matt    schedule 14.02.2015


Ответы (1)


Gnuplot запутается, если вы используете настройки xrange и yrange, которые противоречат настройке rrange. Вероятно, поэтому настройки yrange игнорируются.

Затем вы также должны использовать set size ratio -1, чтобы получить такое же масштабирование по x и yrange. При построении только двух верхних квадрантов вы получите неправильное соотношение сторон с set size square.

set terminal pngcairo font ',10'

set polar
set angle degrees
set size ratio 1
set lmargin 8
set style line 11 lc rgb 'gray80' lt -1
set grid polar ls 11

unset border
unset tics

set xrange [-1:1]
set yrange [0:1]
set size ratio -1

r = 1
set rtics 0.166 format '' scale 0
set label '0°' center at first 0, first r*1.05
set label '-90°' right at first -r*1.05, 0
set label '+90°' 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

set key outside top right

set output 'polar.png'
plot 'norm_polar_1000.txt' w lp ls 1 t '1k'

введите здесь описание изображения

person Christoph    schedule 14.02.2015