matplotlib ticks thickness

You can change all matplotlib defaults using rcParams like in

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()

You can use matplotlib.pyplot.setp

plt.setp(ax.yaxis.get_ticklines(), 'markersize', 25)
plt.setp(ax.yaxis.get_ticklines(), 'markeredgewidth', 3)

You can also use list comprehension, although not having a return value probably does not make much sense, besides reducing the number of lines in the code see e.g. here

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

A simpler way is to use the set_tick_params function of axis objects:

ax.xaxis.set_tick_params(width=5)
ax.yaxis.set_tick_params(width=5)

Doing it this way means you can change this on a per-axis basis with out worrying about global state and with out making any assumptions about the internal structure of mpl objects.

If you want to set this for all the ticks in your axes,

ax = plt.gca()
ax.tick_params(width=5,...)

Take a look at set_tick_params doc and tick_params valid keywords

Tags:

Matplotlib