Offset text positions not implemented · Issue #4476 · matplotlib/matplotlib · GitHub
Skip to content

Offset text positions not implemented #4476

Description

@joferkington

There currently isn't any method of controlling where offset text for an axis gets placed. This causes problems when changing tick locations (e.g. tick_top and tick_right).

Axis.offset_text_position appears to have been intended to be the control, but changing ax.xaxis.offset_text_position and ax.yaxis.offset_text_position has no effect. Furthermore, there doesn't appear to be a code path where offset_text_position is used, or any other mechanism for changing the offset text's position. XAxis._update_offset_text_position (and the equivalent in YAxis) will need to be updated to take this into account.

Consider the following example:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1e8)
y = np.exp(x**0.2)

fig, ax = plt.subplots()
ax.plot(x, y)

ax.xaxis.tick_top()
ax.yaxis.tick_right()

plt.show()

figure_1

In this case, the 1e17 corresponds to the y-axis, while the 1e8 corresponds to the x-axis. Ideally, these should be aligned so that it's clear which axis they correspond to.

For the y-axis, we can move the offset text to the left-hand side, but it will still be in a position that overlaps with the x-axis's ticklabels. Regardless, there's no corresponding method for the x-axis. As an example:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(0, 1e8)
y = np.exp(x**0.2)

fig, ax = plt.subplots()
ax.plot(x, y)

ax.xaxis.tick_top()
ax.yaxis.tick_right()
ax.yaxis.set_offset_position("right")

plt.show()

figure_1

Note: Originally noticed by user3160855 in a Stackoverflow question.

Activity

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

    New featurekeepItems to be ignored by the “Stale” Github Actionstatus: has patchpatch suggested, PR still needed

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions