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

Question:

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!

Asked By: andreas-p

||

Answers:

You can set the rotation property of the tick labels with this line:

plt.setp(axa.xaxis.get_majorticklabels(), rotation=45)

setp is a utility function to set a property of multiple artists (all ticklabels in this case).

BTW: There is no difference between a ‘normal’ and a subplot in matplotlib. Both are just Axes objects. The only difference is the size and position and the number of them in the same figure.

Answered By: hitzg

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)
Answered By: tommy.carstensen

Just wanted to add another solution that I found on the matplotlib git discussion page:

ax[your_axis].tick_params(axis='x', rotation=90)

You can specify the axis you want by passing in the specific paramater. The advantage of this method over the accepted answer is that you can control which axis this change is applied to. Other parameters can be found here

Answered By: PeptideWitch
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.