gpt4 book ai didi

带有来自 3D 数据集的热图的 gnuplot 2D 极坐标图 - 可能吗?

转载 作者:行者123 更新时间:2023-12-04 10:18:36 25 4
gpt4 key购买 nike

我想绘制一个我使用笛卡尔坐标在 3D 中作为表面绘制的图,并将其视为 POLAR 坐标中的 2D 热图。这样做的原因是我正在该坐标系中获取有关系统的数据。我只找到了一些相关的例子,但我在试图让它与我的数据一起工作时陷入困境。我目前正在使用矩阵格式,如果这有助于图表工作,我可以重新格式化数据集。

数据是在扬声器上进行的 SPL 测量。麦克风放置在固定距离(例如固定半径)处,并在整个扬声器水平周围每 10 度进行一次测量。 SPL 测量值是作为频率函数获得的,20Hz 到 20kHz。

我想使用 gnuplot 创建一个二维极坐标图。频率将绘制为半径,围绕扬声器的角度将是角度,“高度”将是 SPL 级别。这应该会生成一个表面,但是,我想创建一个热图 pm3d,然后从上面查看(例如 View 0,0)或作为 2D 图。我还需要添加显示 SPL 间隔的等高线,并将其叠加在热图上。

我在这里发现了笛卡尔坐标类似的东西:
http://gnuplot-tricks.blogspot.com/2009/07/maps-contour-plots-with-labels.html
当我尝试将极坐标用于最终 2D 图的这种方法时,我收到一条错误消息,指出极坐标图不支持“带图像”选项。有人可以尝试这个或确认这一点吗?

我已经能够使用 splot 将我的极坐标数据绘制为 3D 中的热图 + 等高线,并从正上方查看(设置 View 0.0)。如果我首先将现有的极坐标数据转换为笛卡尔坐标,我可能会得到类似于此网页中显示的内容:
how to create a 3d polar graph with gnuplot
我也可以从上面查看,但我想添加极坐标网格并有角度和半径的标签。我是否必须手动执行此操作,还是可以使用 multiplot 来覆盖 2D 网格和从 0.0 开始查看的 3D 绘图?

我不知道如何解决这个问题。任何关于采取什么方向的建议将不胜感激。

-查理

最佳答案

image绘图仅适用于均匀分布的矩形网格,就像排列任何位图图像一样。否则你必须使用 splotpm3d .
set grid polar仅适用于 2D,因此您必须使用 multiplot用极坐标网格覆盖您的热图。这是一个相当长的示例,向您展示它是如何工作的:

reset
set terminal pngcairo size 800,800
set output '3d-polar.png'

set lmargin at screen 0.05
set rmargin at screen 0.85
set bmargin at screen 0.1
set tmargin at screen 0.9

set pm3d map
unset key

set multiplot

# plot the heatmap
set parametric
set isosamples 500

unset border
unset xtics
unset ytics

set angles degree
r = 6
set urange[0:r] # radius
set vrange[0:360] # angle
set xrange[-r:r]
set yrange[-r:r]
set colorbox user origin 0.9,0.1 size 0.03,0.8
splot u*cos(v), u*sin(v), (cos(v)*besj0(2*u))**2

# now plot the polar grid only
set style line 11 lc rgb 'white' lw 2
set grid polar ls 11
set polar
set rrange[0:r]
unset raxis
set rtics format '' scale 0
unset parametric
set for [i=0:330:30] label at first (r+0.35)*cos(i), first (r+0.35)*sin(i)\
center sprintf('%d', i)
plot NaN w l
unset multiplot

结果是:

enter image description here

现在关于一些技巧的一些细节:
  • 为了获得正方形大小,您不能使用 set size ratio 1 ,因为 2D 和 3D 绘图的边距不同,即使您指定了一些绝对边距。因此,我设置了一个方形 Canvas 大小(终端选项 size 800,800),并设置了适当的绝对边距。
  • 你不能unset rtics因为那样网格就会消失。
  • 网格标签必须手动设置。
  • 颜色框也是手动设置的,否则它会与 0 重叠。标签。
  • 绘图 NaN只绘制网格
  • 关于带有来自 3D 数据集的热图的 gnuplot 2D 极坐标图 - 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18792461/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com