plotly / plotly/plotly.py

legend.maxheight not honored in Jupyter / notebook renderer though works in browser

Đang mở
#5,378 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

bug P2
Ngôn ngữ chính
Python
Star
18.8k
Fork
2.8k
Merge trung bình
16 giờ 26 phút
Pull request đã merge (30 ngày)
21

Mô tả

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.


Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách chạy ví dụ Plotly Express được cung cấp với fig.show() trong một Jupyter notebook và với fig.show(renderer="browser"), rồi so sánh hành vi của chú giải với write_html. Truy vết điểm vào của renderer dựa trên notebook và xác định lý do legend.maxheight không được áp dụng; được xem là hoàn thành khi các renderer của notebook giới hạn chú giải nhất quán với renderer của trình duyệt.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
jupyter-notebook, python
Lĩnh vực
data-visualization
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.