Толщина матплотлиба
Есть ли способ увеличить толщину и размер тиков в matplotlib без необходимости писать длинный фрагмент кода следующим образом:
for line in ax1.yaxis.get_ticklines():
line.set_markersize(25)
line.set_markeredgewidth(3)
Проблема с этим фрагментом кода заключается в том, что он использует цикл, который обычно требует большого количества использования ЦП.
Ответы
Ответ 1
Проще всего использовать функцию set_tick_params
объектов axis
:
ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)
Выполнение этого способа означает, что вы можете изменить это на основе оси, не беспокоясь о глобальном состоянии и не делая никаких предположений о внутренней структуре объектов mpl.
Если вы хотите установить это для всех тиков в своих осях,
ax = plt.gca()
ax.tick_params(width=5,...)
Взгляните на set_tick_params
doc и ключевые слова tick_params
Ответ 2
Вы можете изменить все matplotlib
по умолчанию с использованием rcParams
как в
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
# set tick width
mpl.rcParams['xtick.major.size'] = 20
mpl.rcParams['xtick.major.width'] = 4
mpl.rcParams['xtick.minor.size'] = 10
mpl.rcParams['xtick.minor.width'] = 2
x = np.linspace(0., 10.)
plt.plot(x, np.sin(x))
plt.show()
Ответ 3
Вы можете использовать matplotlib.pyplot.setp
plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)
Вы также можете использовать понимание списка, хотя не имеет возвращаемого значения, вероятно, не имеет большого смысла, кроме уменьшения количества строк в коде см., например, здесь
[line.set_markersize(25) for line in ax1.yaxis.get_ticklines()]
[line.set_markeredgewidth(3) for line in ax1.yaxis.get_ticklines()]