You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:基于3D数据集绘制MATHEMATICA/GNUPLOT极坐标热力图

如何用GNUPLOT绘制极坐标热力图?

我有一个3列的数据集:第一列是半径(取值0到90度的角度变量),第二列是方位角(每个半径值都覆盖0到2π的完整范围),第三列是依赖前两者的函数值T。我想绘制一张2D极坐标热力图,展示T随半径和方位角变化的强度。

我试过用GNUPLOT,但始终没能得到想要的图,求可行的实现方法或建议。

补充: 附上简化的示例数据集,三列依次为r、θ、T(r,θ):

0. 0. 5.00000284249414
0. 1. 5.00000284249414
0. 2. 5.00000284249414
0. 3. 5.00000284249414
0. 4. 5.00000284249414
0. 5. 5.00000284249414
0. 6. 5.00000284249414
 
1. 0. 3.567825199007075
1. 1. 5.667040835607859
1. 2. 6.066435899369931
1. 3. 3.620258279907404
1. 4. 5.228476464535639
1. 5. 6.387721052369126
1. 6. 3.775570161705905
 
2. 0. 3.351247019698203
2. 1. 5.782995557435527
2. 2. 6.255369591592488
2. 3. 3.410630384522823
2. 4. 5.267292704344917
2. 5. 6.6370705238320606
2. 6. 3.5870354029796603
 
3. 0. 4.956427159288734
3. 1. 5.018192922028904
3. 2. 5.02858888162984
3. 3. 4.9581591194569505
3. 4. 5.006358999209049
3. 5. 5.036713105661448
3. 6. 4.963218764930239

用GNUPLOT实现的方法

GNUPLOT完全支持极坐标热力图绘制,核心是切换到极坐标模式后,结合pm3d或image样式渲染数据。以下是针对你的数据集的配置脚本:

完整脚本示例

# 切换到极坐标模式
set polar
# 半径是0-90度的角度变量,转成弧度设置范围
set rrange [0:pi/2]
# 方位角覆盖0到2π
set trange [0:2*pi]

# 配置热力图样式
set pm3d map  # 将3D数据投影为2D热力图
set palette gray  # 使用灰度调色板,匹配需求效果
unset key  # 隐藏图例

# 设置坐标轴与标题
set xlabel "方位角"
set ylabel "半径(角度)"
set title "T(r,θ)极坐标热力图"

# 读取数据绘图:列2=方位角θ,列1=半径r,列3=T值
splot "data.txt" using 2:1:3 with pm3d

关键细节说明

  • 坐标适配:你的半径是角度变量,GNUPLOT极坐标默认r为长度,因此要将0-90度转成弧度(pi/2对应90度),确保rrange设置正确。
  • 列映射逻辑:splot的using 2:1:3指定用第二列作为极角(方位角)、第一列作为极径(半径)、第三列作为颜色映射值,完全匹配你的数据结构。
  • 灰度调整:如果默认灰度明暗不符合预期,可加set palette gray reversed反转明暗效果。
  • 数据格式兼容:你的示例数据中,不同半径的方位角组之间有空行,GNUPLOT会自动识别为独立数据块,无需额外处理。

备选:用image样式绘制

如果pm3d效果不理想,可尝试image样式,适合规则网格类数据:

set polar
set rrange [0:pi/2]
set trange [0:2*pi]
set palette gray
unset key

plot "data.txt" using 2:1:3 with image

内容的提问来源于stack exchange,提问作者Patricia Guillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:42:15