Установка колючек в матплотлибрц - PullRequest
6 голосов
/ 09 августа 2010

По странной причине я не могу найти способ указать конфигурацию позвоночника в файле matplotlibrc Python.Есть идеи, как заставить matplotlib не рисовать верхние и правые шипы по умолчанию? spines http://matplotlib.sourceforge.net/_images/whats_new_99_spines.png

Подробнее о шипах в matplotlib можно узнать здесь:

Спасибо

Ответы [ 2 ]

17 голосов
/ 18 августа 2010

Чтобы скрыть правый и верхний спины подпункта, вам нужно установить цвет соответствующих спайнов на 'none', а также установить позицию галочки на 'left' для xtick и 'bottom' для ytick (для того, чтобы скрыть отметки, а также позвоночники).

К сожалению, ни один из них в настоящее время не доступен через matplotlibrc. Параметры, указанные в matplotlibrc, проверяются, а затем сохраняются в файле с именем rcParams. Затем каждый модуль должен проверить наличие ключа в этом файле, значение которого будет использоваться по умолчанию. Если они не проверяют один из своих параметров, этот параметр нельзя изменить с помощью файла rc.

Из-за природы системы rc и способа написания хребтов изменение кода для этого не будет простым:

Колючки в настоящее время получают свой цвет через тот же параметр rc, который используется для определения цветов оси; Вы не можете установить его на 'none', не скрывая весь свой чертеж оси. Они также не имеют никакого отношения к тому, являются ли они top, right, left или bottom & mdash; на самом деле это всего лишь четыре отдельных шипа, хранящиеся в диктовке. Отдельные объекты позвоночника не знают, какую сторону графика они составляют, поэтому вы не можете просто добавить новые параметры rc и назначить нужный во время инициализации позвоночника.

self.set_edgecolor( rcParams['axes.edgecolor'] )

(. / Matplotlib / lib / matplotlib / spines.py , __init __ (), строка 54 )

Если у вас большой объем существующего кода, так что добавление параметров оси вручную к каждому из них будет слишком обременительным, вы можете поочередно использовать вспомогательную функцию для перебора всех объектов Axis и установки значений для вас.

Вот пример:

import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import show

# Set up a default, sample figure. 
fig = plt.figure()
x = np.linspace(-np.pi,np.pi,100)
y = 2*np.sin(x)

ax = fig.add_subplot(1,2,2)
ax.plot(x,y)
ax.set_title('Normal Spines')

def hide_spines():
    """Hides the top and rightmost axis spines from view for all active
    figures and their respective axes."""

    # Retrieve a list of all current figures.
    figures = [x for x in matplotlib._pylab_helpers.Gcf.get_all_fig_managers()]
    for figure in figures:
        # Get all Axis instances related to the figure.
        for ax in figure.canvas.figure.get_axes():
            # Disable spines.
            ax.spines['right'].set_color('none')
            ax.spines['top'].set_color('none')
            # Disable ticks.
            ax.xaxis.set_ticks_position('bottom')
            ax.yaxis.set_ticks_position('left')

hide_spines()
show()

Просто позвоните hide_spines() до show(), и он скроет их на всех цифрах, отображаемых show(). Я не могу придумать более простой способ изменить большое количество цифр, не тратя время на исправление matplotlib и добавив в rc поддержку необходимых параметров.

13 голосов
/ 21 марта 2016

Чтобы matplotlib не рисовал верхние и правые шипы, можно установить следующее в файле matplotlibrc

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