切换到新系统后,我在matplotlib
上遇到一个奇怪的错误。我正在尝试创建一个r轴倒置的极坐标图。因此,以我的情况为90到0。在我以前的系统中,使用最少的工作示例就可以很好地工作:
import matplotlib.pyplot as plt
from random import randint
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'))
plt.scatter([randint(0, 360)], [randint(0, 90)])
ax.set_rlim(90, 0)
ax.set_theta_zero_location('N')
ax.set_theta_direction('clockwise')
plt.show()
在新系统上运行会产生收益
posx and posy should be finite values
posx and posy should be finite values
/usr/local/lib/python3.5/dist-packages/numpy/core/fromnumeric.py:83: RuntimeWarning: invalid value encountered in reduce
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
posx and posy should be finite values
posx and posy should be finite values
posx and posy should be finite values
到目前为止,我发现错误是由包含ax.set_rlim(90, 0)
的行中的r轴倒置触发的(使用ax.set_rlim(0, 90)
可以正常工作)。
我的系统设置为
旧系统非常相似,我无法恢复使用过的版本。这是较新版本中的某些已知错误吗?在极坐标图中,我找不到与此错误消息相关的任何内容。
答案 0 :(得分:0)
我现在通过
只是将标签的范围从90更改为0,从而做出了相当草率的解决方法。ticklabels = ax.get_yticklabels()
labels = range(80, 0, -10)
for i in range(0, len(labels)):
ticklabels[i] = str(labels[i])
ax.set_yticklabels(ticklabels)
所有半径值也必须相应地进行调整。在这种情况下,必须使用90-r_value才能正确显示。