[编辑] 感谢 Александр Рахмаев
自 3.3.3 版起,shading=flat(默认为 pcolormesh)
方法将对当前数据给出错误。我在用
shanding=closest。那么就不会出错了。例子:
plt.pcolormesh(th, r, z, shading='nearest')See this also
我认为你无意中混淆了radius、zenith 和azimuth :)
这描绘了我认为你想要的:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = Axes3D(fig)
rad = np.linspace(0, 5, 100)
azm = np.linspace(0, 2 * np.pi, 100)
r, th = np.meshgrid(rad, azm)
z = (r ** 2.0) / 4.0
plt.subplot(projection="polar")
plt.pcolormesh(th, r, z)
#plt.pcolormesh(th, z, r)
plt.plot(azm, r, color='k', ls='none')
plt.grid()
plt.show()
如果你想要射线网格线,你可以按如下方式在每个 Theta 中添加它们:
plt.thetagrids([theta * 15 for theta in range(360//15)])
还有更多像这样的径向网格:
plt.rgrids([.3 * _ for _ in range(1, 17)])
PS:numpy 和 pyplot 会让你的命名空间保持整洁...