Интересно, что 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")