Насколько мне известно, в gnuplot не существует сразу стиля построения "полярной тепловой карты" (но я могу ошибаться, по крайней мере, я не видел примера на демонстрационной странице). Следовательно, вы должны реализовать это самостоятельно.
По сути, для каждой точки данных вы должны построить заполненный сегмент. Следовательно, для каждой точки данных вы должны создать точки на окружности этого единственного сегмента. Затем вы можете построить этот сегмент with filledcurves
и указать цвет c.
Допущения:
Возможна дальнейшая оптимизация:
- автоматически c извлечение
astep
и rstep
.
Надеюсь, вы сможете адаптировать код под свои нужды.
Код:
### workaround for polar heatmap
reset session
set size square
set angle degrees
unset border
unset tics
set cbtics
set polar
set border polar
unset raxis
# create some test data
f(a,r) = r*cos(a) * r*sin(a) + rand(0)*100
set print $Data
do for [a=0:350:10] {
do for [r=1:20] {
print sprintf("%g %g %g",a,r,f(a,r))
}
}
set print
astep = 10
rstep = 1
# create the segments for each datapoint
set print $PolarHeatmap
do for [i=1:|$Data|] {
a = real(word($Data[i],1))
r = real(word($Data[i],2))
c = real(word($Data[i],3))
do for [j=-5:5] {
print sprintf("%g %g %g",a+j*astep/10., r-0.5*rstep, c)
}
do for [j=5:-5:-1] {
print sprintf("%g %g %g",a+j*astep/10., r+0.5*rstep, c)
}
print ""
print ""
}
set print
set style fill noborder
set palette defined (0 "blue", 1 "grey", 2 "green")
plot $PolarHeatmap u 1:2:3 w filledcurves palette notitle
### end of code
Результат: