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

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

27
задан mlvljr 31 March 2010 в 21:30
поделиться

1 ответ

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

Вызов '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).

6
ответ дан 28 November 2019 в 04:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: