[Matplotlib-users] Can't place text nest to another one
tcaswell at gmail.com
Fri Apr 13 15:10:11 EDT 2018
The problem is that we do not know how big the text will be until we
actually render it so `abc.get_window_extent` is lying.
I suggest looking at
shows how to defer the calling of `get_window_extent` until as late as
On Mon, Apr 9, 2018 at 1:35 PM Ryszard Kubiak <rhkubiak at gmail.com> wrote:
> Hello everybody,
> Please, take a look at the code below. I want to place the text 'xyz'
> just next to 'abc'. The reusult is that 'xyz' goes much further right to
> 'abc' and there is a gap between the texts.
> The width of the bbox happens to be 40, as the printout shows. The 'xyz'
> text is indeed at 40. However, one can see on the canvas that 'abc'
> width is only about 6.5. Thus, there is a mismatch between what
> get_window_extent calculates (40) and what the text size is on the
> canvas (6.5).
> What am I doing wrong?
> Best Regards,
> import matplotlib.pyplot as plt
> fig = plt.figure(frameon=False)
> ax = plt.Axes(fig, [0.0, 0.0, 1.0, 1.0])
> ax.set_xlim(0, 100)
> ax.set_ylim(0, 100)
> renderer = fig.canvas.get_renderer()
> abc = plt.text(0, 0, 'abc', fontsize=20, bbox=dict(facecolor='red',
> alpha=0.2, pad=0))
> bbox = abc.get_window_extent(renderer=renderer)
> print('width:', bbox.width, 'height:', bbox.height)
> xyz = plt.text(bbox.width, 0, 'xyz', fontsize=20,
> bbox=dict(facecolor='blue', alpha=0.2, pad=0))
> Matplotlib-users mailing list
> Matplotlib-users at python.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Matplotlib-users