-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Description
Description
I found that when using legend.maxheight
in Plotly (>= 6.3), it works as expected when rendering via browser (e.g. fig.show(renderer="browser")
or write_html
). However, when using Jupyter Notebook (or similar notebook-based renderers), the maxheight
setting is ignored / not reflected — the legend expands or overflows as if maxheight
were not applied.
This inconsistent behavior suggests that the notebook renderer is not honoring legend.maxheight
, which hampers consistent formatting of legends in notebook environments.
Code Example to Reproduce
import plotly.express as px
from plotly import data
df = data.gapminder().query("year==2007 and continent == 'Europe'")
fig = px.scatter(
df,
x="gdpPercap",
y="lifeExp",
color="country",
size="pop",
size_max=45,
title="Life Expectancy vs. GDP per Capita in 2007 (by Country)",
labels={"gdpPercap": "GDP per Capita"},
)
fig.update_layout(
xaxis=dict(side="top"),
legend=dict(
orientation="h",
yanchor="bottom",
y=-0.35,
xanchor="center",
x=0.5,
maxheight=0.005, # comment out this line to see legend take up ~0.5 of plotting area
title_text="Country"
),
)
# Display inline in notebook
fig.show()
# Display via browser
fig.show(renderer="browser")
When executed:
- In browser renderer, the legend is constrained in height per the
maxheight=0.005
setting (i.e. 0.5% of plotting height). - In notebook renderer, the legend is not constrained and expands beyond that, ignoring the
maxheight
.
Expected Behavior
The legend.maxheight
setting should be honored consistently across all renderers, including the notebook-based inline renderers inside Jupyter or related environments. That is, legends should be constrained to the height specified by maxheight
, even when showing inline.