属性错误:'AxesSubplot'对象没有'sharex'属性

3
我有一些代码在本地的Python 3.7上完美运行,但在远程服务器上也是Python 3.7时却失败了。奇怪的是错误信息是AttributeError: 'AxesSubplot' object has no attribute 'sharex'。然而,AxesSubplot应该有一个sharex属性,因此我不明白它从哪里出现的。以下是一段非常简短的用于调试的代码,在我的远程服务器上无法正常工作:
import numpy as np ; import matplotlib.pyplot as plt

x=np.arange(50) ; y = x

title='test'
plt.close(title)
fig=plt.figure(title, clear=True)
fig.suptitle(title)
ax1,ax2=fig.subplots(nrows=2)
ax1.sharex(ax2)

你能看出问题的起源是什么吗?

比较一下两台机器上安装的matplotlib版本可能会很有用(并在您的问题中提到版本号)。 - wovano
你说得对。在远程服务器上,版本是2.2.3,而在我的本地机器上是3.4.1。现在它可以工作了!谢谢。 - cpannet'
我撤销了你最后一次编辑,因为答案不应该发布在问题中,而是作为一个回答(我现在已经发布了一个完整的回答)。Stack Overflow 是一个问答网站,请参加一下短小的导览,如果你还不熟悉这个网站的话。你可能还想阅读一下提问的智慧。顺便说一句,对于 [mre],你做得很好!它真的帮了大忙! - wovano
2个回答

1
由于代码在您的一台计算机上正常运行,所以问题似乎不在代码本身。因此,首先想到的是检查已安装的matplotlib库的版本。可能这种方法并不存在于所有版本中。
查看Axes类的文档,可以看到sharex()方法在版本3.3中有记录,但在版本3.2中没有记录。因此,另一台计算机可能正在运行旧版,并且升级到3.3.0或更高版本应该可以解决问题。
您已经发现,对于低于3.3的版本,也可以使用以下方法来解决:找到答案
ax1.get_shared_x_axes().join(ax1,ax2)

-1
我觉得错误是来自这一行代码:
fig=plt.figure(title, clear=True)

移除 clear=True 标志,然后再试一次。


谢谢您的回答,不幸的是,即使没有clear=True也不起作用。 - cpannet'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接