Установка `axes.linewidth` без изменения глобального dict` rcParams`

Таким образом, кажется, что невозможно сделать следующее (это вызывает ошибку, поскольку 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 – отдельно и т. Д.)?

PS Если нет, то почему?

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

Вызов « 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 (например, «альфа», «linestyle», capstyle, joinstyle).

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

 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)