为什么这个 matplotlib 代码给我一个奇怪的异常?我要去两排地 block 。顶行应该显示 true 与 pred,底行应该显示百分比误差。
yy = func(*X)
fig, axes = plt.subplots(1, len(X))
for ax,_x in zip(axes,X):
ax.plot(_x, y, 'b.')
ax.plot(_x, yy, 'r.')
fig, axes = plt.subplots(2, len(X))
for ax,_x in zip(axes,X):
ax.plot(_x, yy/y-1, 'r.')
plt.show()
回溯:
File "pysr.py", line 235, in main
ax.plot(_x, yy/y-1, 'r.')
AttributeError: 'numpy.ndarray' object has no attribute 'plot'
最佳答案
如果 len(X)
>1,axes
将是 AxesSubplot
实例的二维数组。因此,当您遍历 axes
时,您实际上会沿 axes
数组的一个维度获得一个切片。
要克服这个问题,您可以使用 axes.flat
:
for ax,_x in zip(axes.flat,X):
此外,如果您尝试将所有这些绘制在一个图形上,则无需调用 plt.subplots
两次,因为这将创建两个图形。
像这样索引 axes
数组可能更容易:
yy = func(*X)
fig, axes = plt.subplots(2, len(X))
for i,_x in enumerate(X):
axes[0, i].plot(_x, y, 'b.')
axes[0, i].plot(_x, yy, 'r.')
axes[1, i].plot(_x, yy/y-1, 'r.')
plt.show()
关于python - 属性错误 : 'numpy.ndarray' object has no attribute 'plot' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111724/