Skip to content

Setting axis ticks in log scale produces duplicate tick labels. #11575

Closed

Description

@szsdk

Bug report

Bug summary

Setting axis ticks in a small log scale produces duplicate tick labels.

Code for reproduction

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
s = 10
ax.axis([s, 100, 10, 100])
ax.loglog([20, 30], [30, 40])
from matplotlib.ticker import ScalarFormatter
for axis in [ax.xaxis, ax.yaxis]:
    axis.set_major_formatter(ScalarFormatter())

ax.set_xticks([20, 55])
ax.set_yticks([20, 55])
plt.show()

Actual outcome
figure_1

change code a little bit

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
s = 9
ax.axis([s, 100, 10, 100])
ax.loglog([20, 30], [30, 40])
from matplotlib.ticker import ScalarFormatter
for axis in [ax.xaxis, ax.yaxis]:
    axis.set_major_formatter(ScalarFormatter())
ax.set_xticks([20, 55])
ax.set_yticks([20, 55])
plt.show()

Expected outcome
figure_2

Matplotlib version

  • Operating system: Ubuntu 16.04
  • Matplotlib version: 2.2.2
  • Matplotlib backend: Qt5Agg
  • Python version: 3.6

Activity

  1. ImportanceOfBeingErnest commented on Jul 5, 2018

    @ImportanceOfBeingErnest
    Member

    I think there is already an issue about this somewhere around (which I can't find currently).
    For some (maybe desired?) reason, minor ticks are labelled as well, depending on the axis bounds.

    A workaround is to turn them off.

    import matplotlib.pyplot as plt
    fig, ax = plt.subplots()
    s = 10
    ax.axis([s, 100, 10, 100])
    ax.loglog([20, 30], [30, 40])
    from matplotlib.ticker import ScalarFormatter, NullFormatter
    for axis in [ax.xaxis, ax.yaxis]:
        axis.set_major_formatter(ScalarFormatter())
        axis.set_minor_formatter(NullFormatter())
    
    ax.set_xticks([20, 55])
    ax.set_yticks([20, 55])
    plt.show()
    

    image

  2. tacaswell commented on Jul 5, 2018

    @tacaswell
    Member

    See https://matplotlib.org/users/dflt_style_changes.html#logformatter-labeling-of-minor-ticks

    The underlying issue is we made the defaults better, but did so in a way that broke people's existing work-arounds.

  3. timhoffm commented on Jan 28, 2019

    @timhoffm
    Member

    Related: #13112, #13126.

  4. added this to the v3.1.0 milestone on Feb 23, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions