pycharm高亮显示代码ax.set_zlabel('Z')

时间:2018-10-26 09:38:29

标签: matplotlib pycharm

我想知道为什么IDE pycharm(2018.1.1)突出显示代码ax.set_zlabel('Z') 带有提示未解析的属性引用'set_zlabel'用于类Axes 但代码正常运行。 这些是导入包

import numpy as np
from scipy.stats import multivariate_normal
from sklearn.mixture import GaussianMixture
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
import matplotlib.pyplot as plt
from sklearn.metrics.pairwise import pairwise_distances_argmin

1 个答案:

答案 0 :(得分:2)

有趣的是,PyCharm并没有向我抱怨以下代码,但是我猜测这是较新版本的影响(我正在使用matplotlib 3.0.0和PyCharm 2018.1.4)。

无论如何,我认为问题出在以下事实:PyCharm可能不知道例如add_subplot()可以根据使用的投影返回不同的对象。

fig = plt.figure()
ax1 = fig.add_subplot(111)
type(ax1)
>>> matplotlib.axes._subplots.AxesSubplot

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax1 = fig.add_subplot(111, projection="3d")
type(ax1)
>>> matplotlib.axes._subplots.Axes3DSubplot

但是,您可以通过提供“类型提示”来帮助PyCharm(请参见https://www.jetbrains.com/help/pycharm/type-hinting-in-product.html

from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax1 = fig.add_subplot(111, projection="3d")  # type: Axes3D
ax1.set_zlabel("z-label")

或者,如果使用Python 3+,则:

ax1: Axes3D = fig.add_subplot(111, projection="3d")