为什么此matplotlib代码给我一个怪异的异常?我要去两排地块。顶行应该显示true vs. 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实例的2D数组。因此,当您遍历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 - AttributeError:“numpy.ndarray”对象没有属性“plot”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38111724/

10-12 21:46