Установка `axes.linewidth` без изменения глобального диктата` rcParams` - PullRequest
25 голосов
/ 31 марта 2010

Таким образом, кажется, что нельзя сделать следующее (возникает ошибка, поскольку axes не имеет set_linewidth метода):

axes_style = {'linewidth':5}
axes_rect = [0.1, 0.1, 0.9, 0.9]

axes(axes_rect, **axes_style)

и должен использовать вместо этого следующий старый трюк:

rcParams['axes.linewidth'] = 5 # set the value globally

... # some code

rcdefaults() # restore [global] defaults

Существует ли простой / чистый способ (может быть, можно задать параметры осей x - и y - индивидуально и т. Д.)?

P.S. Если нет, то почему?

Ответы [ 3 ]

58 голосов
/ 20 декабря 2013

Приведенный выше ответ не работает, как это объясняется в комментариях. Я предлагаю использовать шипы.

import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)

# you can change each line separately, like:
#ax.spines['right'].set_linewidth(0.5)
# to change all, just write:

for axis in ['top','bottom','left','right']:
  ax.spines[axis].set_linewidth(0.5)

plt.show()
# see more about spines at:
#http://matplotlib.org/api/spines_api.html
#http://matplotlib.org/examples/pylab_examples/multiple_yaxis_with_spines.html
11 голосов
/ 19 апреля 2016
plt.setp(ax.spines.values(), linewidth=5)
5 голосов
/ 01 апреля 2010

Да, есть простой и чистый способ сделать это.

Вызов ' axhline ' и ' axvline ' из экземпляра оси представляется техникой, одобренной в документации MPL.

В любом случае, это просто и дает вам детальный контроль над внешним видом осей.

Так, например, этот код создаст график и раскрасит ось X зеленым цветом и увеличит ширину линии оси X от значения по умолчанию «1» до значения «4»; ось Y окрашена в красный цвет, а ширина линии оси Y увеличена с «1» до «8».

from matplotlib import pyplot as PLT
fig = PLT.figure()
ax1 = fig.add_subplot(111)

ax1.axhline(linewidth=4, color="g")        # inc. width of x-axis and color it green
ax1.axvline(linewidth=4, color="r")        # inc. width of y-axis and color it red

PLT.show()

Функция axhline / axvline принимает дополнительные аргументы, которые должны позволить вам делать практически все, что вы хотите эстетически, в частности, любые свойства ~ matplotlib.lines.Line2D являются допустимыми kwargs (например, 'alpha', 'linestyle' , capstyle, joinstyle).

...