plotnine icon indicating copy to clipboard operation
plotnine copied to clipboard

Bottom legend overlaps x axis labels

Open bersbersbers opened this issue 4 years ago • 3 comments

Using plotnine==0.7.1 and the following code

"""Bug."""
from plotnine import aes, geom_point, ggplot, guide_legend, guides, theme

p = ggplot() + aes(x=1, y=2, color=3) + geom_point()
p = p + guides(color=guide_legend()) + theme(legend_position="bottom")
p.save("bug.png")

I can produce this figure where the bottom legend overlaps the x axis labels: bug

More version information:

plotnine==0.7.1
  - descartes [required: >=1.1.0, installed: 1.1.0]
    - matplotlib [required: Any, installed: 3.3.3]
      - cycler [required: >=0.10, installed: 0.10.0]
        - six [required: Any, installed: 1.15.0]
      - kiwisolver [required: >=1.0.1, installed: 1.3.1]
      - numpy [required: >=1.15, installed: 1.19.4]
      - pillow [required: >=6.2.0, installed: 7.1.2]
      - pyparsing [required: >=2.0.3,!=2.1.6,!=2.1.2,!=2.0.4, installed: 2.4.7]
      - python-dateutil [required: >=2.1, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
  - matplotlib [required: >=3.1.1, installed: 3.3.3]
    - cycler [required: >=0.10, installed: 0.10.0]
      - six [required: Any, installed: 1.15.0]
    - kiwisolver [required: >=1.0.1, installed: 1.3.1]
    - numpy [required: >=1.15, installed: 1.19.4]
    - pillow [required: >=6.2.0, installed: 7.1.2]
    - pyparsing [required: >=2.0.3,!=2.1.6,!=2.1.2,!=2.0.4, installed: 2.4.7]
    - python-dateutil [required: >=2.1, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
  - mizani [required: >=0.7.1, installed: 0.7.2]
    - matplotlib [required: >=3.1.1, installed: 3.3.3]
      - cycler [required: >=0.10, installed: 0.10.0]
        - six [required: Any, installed: 1.15.0]
      - kiwisolver [required: >=1.0.1, installed: 1.3.1]
      - numpy [required: >=1.15, installed: 1.19.4]
      - pillow [required: >=6.2.0, installed: 7.1.2]
      - pyparsing [required: >=2.0.3,!=2.1.6,!=2.1.2,!=2.0.4, installed: 2.4.7]
      - python-dateutil [required: >=2.1, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
    - numpy [required: Any, installed: 1.19.4]
    - palettable [required: Any, installed: 3.3.0]
    - pandas [required: >=1.1.0, installed: 1.2.0]
      - numpy [required: >=1.16.5, installed: 1.19.4]
      - python-dateutil [required: >=2.7.3, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - pytz [required: >=2017.3, installed: 2020.5]
  - numpy [required: >=1.16.0, installed: 1.19.4]
  - pandas [required: >=1.1.0, installed: 1.2.0]
    - numpy [required: >=1.16.5, installed: 1.19.4]
    - python-dateutil [required: >=2.7.3, installed: 2.8.1]
      - six [required: >=1.5, installed: 1.15.0]
    - pytz [required: >=2017.3, installed: 2020.5]
  - patsy [required: >=0.5.1, installed: 0.5.1]
    - numpy [required: >=1.4, installed: 1.19.4]
    - six [required: Any, installed: 1.15.0]
  - scipy [required: >=1.2.0, installed: 1.4.1]
    - numpy [required: >=1.13.3, installed: 1.19.4]
  - statsmodels [required: >=0.11.1, installed: 0.12.1]
    - numpy [required: >=1.15, installed: 1.19.4]
    - pandas [required: >=0.21, installed: 1.2.0]
      - numpy [required: >=1.16.5, installed: 1.19.4]
      - python-dateutil [required: >=2.7.3, installed: 2.8.1]
        - six [required: >=1.5, installed: 1.15.0]
      - pytz [required: >=2017.3, installed: 2020.5]
    - patsy [required: >=0.5, installed: 0.5.1]
      - numpy [required: >=1.4, installed: 1.19.4]
      - six [required: Any, installed: 1.15.0]
    - scipy [required: >=1.1, installed: 1.4.1]
      - numpy [required: >=1.13.3, installed: 1.19.4]

bersbersbers avatar Jan 05 '21 17:01 bersbersbers

This is a known issue related to not having a good layout manager (#46) to rely on. As such all legend positions other than the left hand side are not guaranteed to not overlap other objects. The work around is to use the legend_spacing themeable to push the legend away from the axis. i.e + theme(legend_position="bottom", legend_box_spacing=.5)

has2k1 avatar Jan 05 '21 21:01 has2k1

Thanks, understood. Similar reason as #452 (and a bunch of other issues) then...

bersbersbers avatar Jan 05 '21 22:01 bersbersbers

Thanks, understood. Similar reason as #452 (and a bunch of other issues) then...

Yes.

has2k1 avatar Jan 06 '21 09:01 has2k1

Cheers. Just tested v0.10.1 (installed via mamba) and at least in case of rotated x-labels it's apparently not working. Was it actually fixed in v0.10.0?

image

tycho-kirchner avatar Jan 17 '23 15:01 tycho-kirchner

It was not fixed.

has2k1 avatar Jan 17 '23 15:01 has2k1

Fixed and shipping soon.

has2k1 avatar May 09 '23 05:05 has2k1