Skip to content

Conversation

@scottshambaugh
Copy link
Contributor

@scottshambaugh scottshambaugh commented Feb 2, 2026

PR summary

Closes #31054

Text didn't have a get_tightbbox override yet, so this adds that with some handling for no-show cases. The _in_axes_domain check is not exclusive to text and may be useful elsewhere, so was given to Artist more broadly.

The plot in the original issue renders correctly now, and I can confirm it was broken for me before:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x) * 10

fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_yscale('log')
ax.text(5, -5, "I am at y = -5", color='red')

plt.savefig("test_gh31054.png", bbox_inches='tight')
test_gh31054

PR checklist

@scottshambaugh scottshambaugh changed the title BIG: Fix text appearing far outside valid axis scale range BUG: Fix text appearing far outside valid axis scale range Feb 2, 2026
@scottshambaugh scottshambaugh force-pushed the log_text_negative_coord branch from 0d3ef72 to 7ef9295 Compare February 2, 2026 23:26
Comment on lines 1064 to 1065
if not self.get_visible() or self.get_text() == "":
return Bbox.null()
Copy link
Contributor Author

@scottshambaugh scottshambaugh Feb 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This addition was changing a half dozen baseline images, as plots expanded to fill space where there was empty/invisible text. Removed for now, but I think that's probably the right behavior and we can discuss including it.

@scottshambaugh scottshambaugh force-pushed the log_text_negative_coord branch from 7ef9295 to 4ffb8d3 Compare February 3, 2026 00:13
@scottshambaugh scottshambaugh marked this pull request as ready for review February 3, 2026 00:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[MNT]: Inconsistency in log-scale handling: bbox_inches='tight' creates massive canvas for negative text coordinates

1 participant