简体   繁体   中英

Python: How to increase/reduce the fontsize of x and y tick labels?

I seem to have a problem in figuring out how to increase or decrease the fontsize of both the x and y tick labels while using matplotlib .

I am aware that there is the set_xticklabels(labels, fontdict=None, minor=False, **kwargs) function, but I failed to understand how to control the fontsize in it.

I expected something somehow explicit, like

title_string=('My Title')
plt.suptitle(title_string, y=1.0, fontsize=17)

but I haven't found anything like that so far. What am I missing?

One shouldn't use set_yticklabels to change the fontsize, since this will also set the labels (ie it will replace any automatic formatter by a FixedFormatter ), which is usually undesired. The easiest is to set the respective tick_params :

ax.tick_params(axis="x", labelsize=8)
ax.tick_params(axis="y", labelsize=20)

or

ax.tick_params(labelsize=8)

in case both axes shall have the same size.

Of course using the rcParams as in @tmdavison's answer is possible as well.

You can set the fontsize directly in the call to set_xticklabels and set_yticklabels (as noted in previous answers). This will only affect one Axes at a time.

ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)
ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)

Note this method should only be used if you are fixing the positions of the ticks first (eg using ax.set_xticks ). If you are not changing the tick positions from the default ones, you can just change the font size of the tick labels without changing the text using ax.tick_params

ax.tick_params(axis='x', labelsize=8)
ax.tick_params(axis='y', labelsize=8)

or

ax.tick_params(axis='both', labelsize=8)

You can also set the ticklabel font size globally (ie for all figures/subplots in a script) using rcParams :

import matplotlib.pyplot as plt

plt.rc('xtick',labelsize=8)
plt.rc('ytick',labelsize=8)

Or, equivalently:

plt.rcParams['xtick.labelsize']=8
plt.rcParams['ytick.labelsize']=8

Finally, if this is a setting that you would like to be set for all your matplotlib plots, you could also set these two rcParams in your matplotlibrc file:

xtick.labelsize      : 8 # fontsize of the x tick labels
ytick.labelsize      : 8 # fontsize of the y tick labels

使用关键字size而不是fontsize

It is simpler than I thought it would be.

To set the font size of the x-axis ticks:

x_ticks=['x tick 1','x tick 2','x tick 3']
ax.set_xticklabels(x_ticks, rotation=0, fontsize=8)

To do it for the y-axis ticks:

y_ticks=['y tick 1','y tick 2','y tick 3']
ax.set_yticklabels(y_ticks, rotation=0, fontsize=8)

The arguments rotation and fontsize can easily control what I was after.

Reference: http://matplotlib.org/api/axes_api.html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM