Чтобы использовать методы и член объекта, вам сначала нужно создать этот объект. Если вы его не создали (переменная, которая должна содержать объект, не инициализируется), но вы пытаетесь использовать его методы или переменные, вы получите эту ошибку.
Иногда вы можете просто забыть инициализировать .
Отредактировано: new не может вернуть значение null, но исключение огня при ошибке. Давно это было на некоторых языках, но не больше. Спасибо @John Saunders за указание на это.
Это предлагаемое решение Matplotlib 2.0 с официального сайта ЗДЕСЬ :
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(x)
ax = plt.subplot(111)
ax.plot(x, y)
# Hide the right and top spines
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
# Only show ticks on the left and bottom spines
ax.yaxis.set_ticks_position('left')
ax.xaxis.set_ticks_position('bottom')
plt.show()
[/g1]
(В дополнение к исчерпывающим ответам здесь больше комментария комментария.)
Обратите внимание, что мы можем скрыть каждый из этих трех элементов независимо друг от друга:
ax.set_frame_on(False)
или ax.spines['top'].set_visible(False)
ax.tick_params(top=False)
ax.tick_params(labeltop=False)
Если вам не нужны тики и т. д. (например, для построения качественных иллюстраций), вы также можете использовать этот быстрый способ:
Сделать ось невидимой (например, с plt.gca().axison = False
), а затем нарисовать их вручную с plt.arrow
.
[edit] matplotlib в настоящее время (2013-10) в версии 1.3.0, который включает в себя этот
. Эта способность была фактически добавлена, и вам нужна версия Subversion для нее. Вы можете увидеть пример кода здесь .
Я просто обновляюсь, чтобы сказать, что сейчас есть лучший пример . Тем не менее, нужна версия Subversion, хотя еще не было этой версии.
[edit] Matplotlib 0.99.0 RC1 был только что выпущен и включает эту возможность.
mpl.subplots
, нельзя использовать таким образом?
– Stefan van der Walt
2 May 2014 в 08:57
Библиотека Seaborn имеет встроенную функцию despine ().
Просто добавьте:
import seaborn as sns
Теперь создайте свой график. И добавьте в конец:
sns.despine()
Если вы посмотрите на некоторые из значений параметров по умолчанию для функции, они удаляют верхний и правый позвоночник и сохраняют нижний и левый позвоночник:
sns.despine(top=True, right=True, left=False, bottom=False)
Ознакомьтесь с дополнительной документацией здесь: https://seaborn.pydata.org/generated/seaborn.despine.html
Это гораздо более рудиментарно, но может сделать трюк:
remove_border ()
В качестве альтернативы, этот
def simpleaxis(ax):
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
ax.get_xaxis().tick_bottom()
ax.get_yaxis().tick_left()
, похоже, оказывает такое же влияние на ось без потери поддержки вращающихся меток.
(Matplotlib 1.0.1; решение, вдохновленное это ).