Скрытие текста оси в графиках matplotlib
Я пытаюсь построить фигуру без галочек или чисел на любой из осей (я использую оси в традиционном смысле, а не номенклатуру matplotlib!). Проблема, с которой я столкнулся, заключается в том, что matplotlib корректирует метки X(y), вычитая значение N, а затем добавляет N в конце оси.
Это может быть расплывчато, но следующий упрощенный пример подчеркивает проблему, причем "6.18" является оскорбительным значением N:
import matplotlib.pyplot as plt
import random
prefix = 6.18
rx = [prefix+(0.001*random.random()) for i in arange(100)]
ry = [prefix+(0.001*random.random()) for i in arange(100)]
plt.plot(rx,ry,'ko')
frame1 = plt.gca()
for xlabel_i in frame1.axes.get_xticklabels():
xlabel_i.set_visible(False)
xlabel_i.set_fontsize(0.0)
for xlabel_i in frame1.axes.get_yticklabels():
xlabel_i.set_fontsize(0.0)
xlabel_i.set_visible(False)
for tick in frame1.axes.get_xticklines():
tick.set_visible(False)
for tick in frame1.axes.get_yticklines():
tick.set_visible(False)
plt.show()
три вещи, которые я хотел бы чтобы знать, являются:
Как отключить это поведение в первую очередь (хотя в большинстве случаев это полезно, это не всегда!) Я просмотрел
matplotlib.axis.XAxisи не может найти ничего подходящегокак я могу заставить N исчезнуть (т. е.
X.set_visible(False))есть ли лучший способ сделать это в любом случае? Мой окончательный сюжет будет 4x4 подзаголовков на рисунке, если это имеет отношение.
5 ответов:
вместо того, чтобы прятаться каждый элемент, вы можете скрыть всю ось:
frame1.axes.get_xaxis().set_visible(False) frame1.axes.get_yaxis().set_visible(False)или вы можете установить Тики в пустой список:
frame1.axes.get_xaxis().set_ticks([]) frame1.axes.get_yaxis().set_ticks([])в этом втором варианте, вы все еще можете использовать
plt.xlabel()иplt.ylabel()для добавления подписей к осям.
Если вы хотите скрыть только текст оси, сохраняя линии сетки:
frame1 = plt.gca() frame1.axes.xaxis.set_ticklabels([]) frame1.axes.yaxis.set_ticklabels([])делаешь
set_visible(False)илиset_ticks([])также скрывает линии сетки.
Если вы похожи на меня и не всегда получают топоры,
ax, при построении фигуры, то простое решение было бы сделатьplt.xticks([]) plt.yticks([])
несколько старый поток, но, похоже, это более быстрый метод с использованием последней версии matplotlib:
установите основной форматер для оси x
ax.xaxis.set_major_formatter(plt.NullFormatter())
на самом деле я не смог отобразить изображение без границ или данных оси на основе любого из фрагментов кода здесь (даже тот, который был принят в ответе). После копания в некоторой документации API, я приземлился на этот код, чтобы отобразить мое изображение
plt.axis('off') plt.tick_params(axis='both', left='off', top='off', right='off', bottom='off', labelleft='off', labeltop='off', labelright='off', labelbottom='off') plt.savefig('foo.png', dpi=100, bbox_inches='tight', pad_inches=0.0)я использовал вызов tick_params, чтобы в основном закрыть любую дополнительную информацию, которая может быть отображена, и у меня есть идеальный график в моем выходном файле :). Надеюсь, это поможет!
Comments