如何在极坐标等高线图中绘制变量随时间变化的数值?
解决极坐标情感得分可视化问题
你的代码存在两个核心问题:
emotion_list长度(7个)与角度数组rad_arr长度(约51个)不匹配,导致网格维度混乱- 自定义
func的逻辑不符合目标图的可视化需求,目标图应该是每个角度区间对应一个情感得分,用颜色填充扇区
以下是修正后的代码,能实现类似目标图的效果:
import numpy as np import matplotlib.pyplot as plt emotion_list = [0.0, 0.2, 0.3, 0.3, 0.0, 0.2, 0.0] n_emotions = len(emotion_list) # 生成闭合的角度区间(从0到2π,共n_emotions+1个点) theta = np.linspace(0, 2 * np.pi, n_emotions + 1) # 生成径向网格(从中心0到最大情感得分,细分100份保证平滑) r = np.linspace(0, max(emotion_list), 100) # 创建极坐标网格 R, Theta = np.meshgrid(r, theta) # 为每个角度区间赋值对应的情感得分 values = np.zeros_like(R) for i in range(n_emotions): values[i, :] = emotion_list[i] # 绘制极坐标填充图 fig, ax = plt.subplots(subplot_kw=dict(projection='polar')) # 使用contourf填充,levels设置为情感数量保证每个扇区对应单一颜色 contour = ax.contourf(Theta, R, values, cmap='Spectral_r', levels=n_emotions) # 优化显示效果 ax.set_rmax(max(emotion_list)) # 设置径向最大刻度为最大情感得分 plt.colorbar(contour, ax=ax, shrink=0.8) # 添加颜色条对应情感得分 plt.show()
关键修正点:
- 统一角度数量与情感得分数量,将角度划分为与
emotion_list长度一致的扇区 - 构建径向网格并为每个扇区赋值对应的情感得分,确保颜色填充与情感值对应
- 添加颜色条直观展示得分与颜色的映射关系
内容的提问来源于stack exchange,提问作者Inge Aeronáutico
相关产品推荐
相关产品推荐

