pycharm выделяет код ax.set_zlabel ('Z') - PullRequest
0 голосов
/ 26 октября 2018

Я хочу знать, почему в 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 голосов
/ 26 октября 2018

Интересно, что 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...