Настройка `axes.ширина линии` без изменения глобального параметра `rcParams`
-
23-09-2019 - |
Вопрос
Итак, кажется, что невозможно выполнить следующее (это вызывает ошибку, поскольку 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.Если нет, то почему?
Решение
Приведенный выше ответ не работает, как это объяснено в комментариях.Я предлагаю использовать шипы.
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
Другие советы
plt.setp(ax.spines.values(), linewidth=5)
Да, есть простой и понятный способ сделать это.
Зовущий 'линия оси" и "линия оси' из экземпляра axis, по-видимому, используется метод, одобренный в документации 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).