Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rotate tick labels in subplot (Pyplot, Matplotlib, gridspec)

I am attempting to rotate the x labels of a subplot (created using GridSpec) by 45 degrees. I have tried using axa.set_xticks() and axa.set_xticklabels, but it does not seem to work. Google wasn't helping either, since most questions concerning labels are about normal plots, and not subplots.

See code below:

width = 20                                    # Width of the figure in centimeters height = 15                                   # Height of the figure in centimeters w = width * 0.393701                            # Conversion to inches h = height * 0.393701                           # Conversion to inches  f1 = plt.figure(figsize=[w,h]) gs = gridspec.GridSpec(1, 7, width_ratios = [1.5, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0])  axa = plt.subplot(gs[0]) axa.plot(dts, z,'k', alpha=0.75, lw=0.25) #axa.set_title('...') axa.set_ylabel('TVDSS ' + '$[m]$', fontsize = '10' ) axa.set_xlabel('slowness 'r'$[\mu s/m]$', fontsize = '10') axa.set_ylim(245, 260) axa.set_xlim(650, 700) axa.tick_params(labelsize=7) axa.invert_yaxis() axa.grid() 

Any help will be greatly appreciated!

like image 227
andreas-p Avatar asked Jul 02 '15 13:07

andreas-p


People also ask

How do you rotate a tick label in Python?

Rotate X-Axis Tick Labels in Matplotlib There are two ways to go about it - change it on the Figure-level using plt. xticks() or change it on an Axes-level by using tick. set_rotation() individually, or even by using ax. set_xticklabels() and ax.


1 Answers

You can do it in multiple ways:

Here is one solution making use of tick_params:

ax.tick_params(labelrotation=45) 

Here is another solution making use of set_xticklabels:

ax.set_xticklabels(labels, rotation=45) 

Here is a third solution making use of set_rotation:

for tick in ax.get_xticklabels():     tick.set_rotation(45) 
like image 69
tommy.carstensen Avatar answered Sep 30 '22 23:09

tommy.carstensen