Как убрать верхнюю и правую оси в matplotlib? - PullRequest
93 голосов
/ 29 мая 2009

Вместо стандартного стиля «в штучной упаковке» оси, я хочу иметь только левую и нижнюю оси, т.е.

+------+         |
|      |         |
|      |   --->  |
|      |         |
+------+         +-------

Это должно быть легко, но я не могу найти необходимые опции в документации.

Ответы [ 6 ]

93 голосов
/ 08 декабря 2014

Предлагаемое решение 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()

enter image description here

62 голосов
/ 04 ноября 2011

В качестве альтернативы, это

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; решение, вдохновленное this ).

32 голосов
/ 29 мая 2009

[edit] matplotlib in now (2013-10) в версии 1.3.0, которая включает в себя

Эта способность была на самом деле только что добавлена, и вам нужна версия Subversion для нее. Вы можете увидеть пример кода здесь .

Я просто обновляюсь, чтобы сказать, что сейчас есть лучший пример онлайн. Все еще нужна версия Subversion, хотя с этим еще не было релиза.

[править] Matplotlib 0.99.0 RC1 был только что выпущен и включает эту возможность.

9 голосов
/ 29 мая 2009

Если вам не нужны галочки и тому подобное (например, для построения качественных иллюстраций), вы также можете использовать этот быстрый обходной путь:

Сделайте ось невидимой (например, с помощью plt.gca().axison = False), а затем нарисуйте их вручную с помощью plt.arrow.

5 голосов
/ 27 декабря 2017

(Это скорее дополнительный комментарий, в дополнение к подробным ответам здесь.)


Обратите внимание, что мы можем скрыть каждый из этих трех элементов независимо друг от друга:

  • Чтобы скрыть границу (она же «позвоночник»): ax.set_frame_on(False) или ax.spines['top'].set_visible(False)

  • Чтобы скрыть галочки: ax.tick_params(top=False)

  • Чтобы скрыть метки: ax.tick_params(labeltop=False)

3 голосов
/ 05 июля 2018

Библиотека 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...