Matplotlib 极坐标等高线图:跨 theta 原点连续

问题描述 投票:0回答:2

我的数据格式为

E
(
freq
,
theta
),其中
E
是二维数组,
freq
theta
是一维数组。

以下部分代码生成附图。但是,我希望使轮廓图在 0 度原点上连续(即沿 0 方位角没有空白楔形)。

我已经探索了 matplotlib 文档,并广泛发布了问题,但似乎找不到此问题的解决方案。有什么想法吗?

代码:

[r, th] = np.meshgrid(freq,theta)

fig = plt.figure()
ax = fig.add_subplot(111, polar=True)
ax.set_theta_zero_location('N')
ax.set_theta_direction(-1)

cntf = ax.contourf(th,r,np.log10(E),cmap='jet',extend='both',
    levels=np.linspace(np.mean(np.log10(E)), np.amax(np.log10(E)), 15))

ax.set_rlim(0, .3)
label_position=ax.get_rlabel_position()
ax.text(np.radians(label_position+25),ax.get_rmax()/1.5,'f (Hz)',
        rotation=label_position,ha='center',va='center')

制作情节: Directional wave spectrum

python matplotlib plot polar-coordinates contourf
2个回答
2
投票

与此类似的东西: https://stackoverflow.com/a/22129714/9324652

enter image description here

dtheta = np.diff(theta).mean()
wrp_theta = np.concatenate((theta, theta[-1:] + dtheta))
wrp_E = np.concatenate((E, E[0:1, :]), axis=0)

0
投票

如果您打算可视化波谱(这就是您的数据似乎拥有的),使用波谱包可能会为您节省大量工作(假设您的文件受支持) https://wavespectra.readthedocs.io/en/latest/index.html

© www.soinside.com 2019 - 2024. All rights reserved.