Description
The documentation of Tick.set_pad says
Set the tick label pad in points
but it does not seem to have any effect.
This was reported by NotBrianCox samwisehawkins@gmail.com in the user mailing list and here is his original message.
On Tue, Mar 15, 2011 at 10:43 AM, NotBrianCox samwisehawkins@gmail.com wrote:
I'm plotting a series of sub plots within a figure, where most are small sub
plots, but the last one spans the width of the figure. For the final subplot
only, I want to set the xtick pad to 20. Something like:import matplotlib.pyplot as plt
fig = plt.figure()
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,1,3)plt.setp(ax3.xaxis.get_major_ticks(), pad=20)
plt.show()But this doesn't have any effect on the final plot. I've also tried getting
the ticks individually and calling set_pad(20) i.e.:for tick in ax3.xaxis.get_major_ticks():
tick.set_pad(20)But this does't work either. Anyone have an ideas?
Apparently, set_pad only sets Tick._pad and I believe it does not have any effect unless the transform property is also updated. Also, _pad attribute is overwritten by apply_tickdir method.
I feel that the set_pad method should set "_base_pad" attribute and update the transform. Or change the documentation to state these explicitly.
Just in case, pads can be changed using the tick_params method.
ax3.tick_params(pad=20)
This sets _base_pad property and update the transform.
-JJ