Skip to content

Tick.set_pad does not work #88

Closed
Closed
@leejjoon

Description

@leejjoon

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions