matplotlib 方法和属性在按下dot时不显示(intellisense)

sqyvllje  于 2023-11-22  发布在  其他
关注(0)|答案(1)|浏览(162)

昨天我从3.11升级到python 3.12。我使用的编辑器是VScode
当我使用matplotlib的标准模式(来自官方文档)时,intellisense无法识别类型,因此按下点无法暴露方法和属性。
下面是可复制的代码:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

fruits = ['apple', 'blueberry', 'cherry', 'orange']
counts = [40, 100, 30, 55]
colours = ['red', 'blue', 'red', 'orange']

ax.bar(fruits, counts, label=colours, color=colours)

ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')

plt.show()

字符串
如果我显式地输入hint**,那么它就可以工作。但是这非常笨拙,看起来很糟糕。
我现在要做的是:

import matplotlib.pyplot as plt
from matplotlib.figure import Figure    # added this
from matplotlib.axes import Axes        # added this

fig, ax = plt.subplots()
fig: Figure                             # added this
ax: Axes                                # added this

fruits = ['apple', 'blueberry', 'cherry', 'orange']
counts = [40, 100, 30, 55]
colours = ['red', 'blue', 'red', 'orange']

ax.bar(fruits, counts, label=colours, color=colours)

ax.set_ylabel('fruit supply')
ax.set_title('Fruit supply by kind and color')
ax.legend(title='Fruit color')

plt.show()


在我的记忆中,我从来没有在Python的早期版本中遇到过这个问题。
如何解决这个问题,使我不必显式地键入figax

q3qa4bjr

q3qa4bjr1#

在两个Python版本中,我都没有在ax.之后看到Intellisense。原因是matplotlib 3.8.0中的plt.subplots返回tuple[Figure, Any],所以Pylance不知道ax的类型。Matplotlib 3.8.0添加了Pylance信任的内联类型,因为lib是py.typed
如果我安装的是matplotlib 3.7.3而不是3.8.0(不管Python版本如何),那么Pylance将使用其捆绑的matplotlib存根,并将ax视为Axes对象。

相关问题