Skip to content

[Doc]: Use tick_params() instead of iterating over tick labels for setting tick properties #23372

Open

Description

@timhoffm

Documentation Link

No response

Problem

At first sight, the effects of (1)

ax.tick_params(axis='x', labelrotation=90)

and (2)

for label in ax.get_xticklabels():
    label.set_rotation(90)

look similar.

However, the first solution is to be preferred:

  • It's shorter.
  • There's a fundamental difference: Tick label instances are not stable. They may be deleted, moved around or new ones created, e.g. when you pan or zoom the plot.(1) affects all current tick labels and sets the default for future ones. (2) only modifies the current labels. That means you can get labels with a different style when you manipulate the figure. This is almost never wanted. Therefore (2) is discouraged and we should remove it from our examples.

Suggested improvement

  1. Search through the examples and tutorials files. Suggest regular expression in.*ticklabels\(\)
  2. Replace the for loop with a call to tick_params(). (Note: Not every property of ticks is accessible through tick_params() so there may be some rare cases that cannot be replaced as of now.)
  3. Validate visually that the old and new code produce the same figure.

Activity

  1. QuLogic commented on Jun 30, 2022

    @QuLogic
    Member

    Possibly also iteration over Axis.get_major_ticks and Axes.get_minor_ticks should be changed as well.

  2. QuLogic commented on Jun 30, 2022

    @QuLogic
    Member

    Also, many of these calls set rotation, and then also horizontalalignment, but I don't think we expose that via tick_params, so this is somewhat contingent on #20644

  3. removed
    🌱 Good first issueOpen a pull request against these issues if there are no active ones!
    on Jul 1, 2022
  4. timhoffm commented on Jul 1, 2022

    @timhoffm
    MemberAuthor

    Simple cases fixed by #23377.

    waiting for #20644

  5. timhoffm commented on Nov 3, 2025

    @timhoffm
    MemberAuthor

    There's still need for improvement in the docs at least at:

    Overall, the artist tutorial should mention that ticks are ephemal and thus any applied properties may vanish.


    Also all getter methods for sequences of tick components should get an appropirate note.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions