Подтвердить что ты не робот

Толщина матплотлиба

Есть ли способ увеличить толщину и размер тиков в matplotlib без необходимости писать длинный фрагмент кода следующим образом:

for line in ax1.yaxis.get_ticklines():
    line.set_markersize(25)
    line.set_markeredgewidth(3)

Проблема с этим фрагментом кода заключается в том, что он использует цикл, который обычно требует большого количества использования ЦП.

4b9b3361

Ответ 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()]