-
-
Notifications
You must be signed in to change notification settings - Fork 7.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ENH]: Faking a text's metrics to fix its alignment #28211
Labels
Comments
Manipulating text metrics to monkey-patch layout is ok for TeX because basically all they have is text. But it feels much too specific for our case. I think we'd need more general tools to configure sizes and available space for Artists, likely something like Qt's sizeHint() / QSizePolicy mechanism. If it's easy to support |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Problem
Sometimes, it would be useful if we could "fake" a text's metrics to pretend it has a different physical size than its real size. Consider for example the following example; pretend the two subfigures are actually two separate figures that I want to save an embed in a presentation on consecutive slides, so that the orange line shows up on the second one:
As it is, doing an animation would result in everything moving around in a rather ugly manner.
Because I know a bit about the matplotlib text internals :-) I know how to temporarily patch matplotlib to fix this, the trick being to swap out the text when matplotlib is measuring its extents, but not when drawing it:
which results in
but obviously that is not a "practical" solution (even though I'm happy to have that in my toolbox).
Proposed solution
At least for mathtext strings, we could support the TeX macros
\smash
,\phantom
, and their variants, which are the TeX approach for fixing such alignment problems (see e.g. https://www.tug.org/TUGboat/Articles/tb22-4/tb72perlS.pdf). It is not entirely optimal to only support this for mathtext strings, but that's the best I can think of right now -- adding an additional "faked_size" (or similar) property on Text objects seems less convenient, e.g. for the legend case above.The text was updated successfully, but these errors were encountered: