我想知道为什么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
答案 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")