Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

[BUG]: Table string cells render as NaN when cells.format is set before initial render, but Plotly.restyle renders correctly

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

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

Đánh giá

Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức phù hợp với người mới
55/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
javascript, python

Hướng nghiên cứu

Trước tiên, hãy chạy trình tái hiện bằng Python và Playwright được cung cấp, so sánh lần render ban đầu với đường dẫn Plotly.restyle về sau. Theo dõi cách table cells.format được xử lý trong lần render ban đầu so với restyle, và coi issue là hoàn tất khi các giá trị ô dạng chuỗi được render giống hệt nhau trong cả hai trường hợp.

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

Mô tả

bug good for agent P3 size: 3
Description

When initializing a Plotly go.Table with string cell values such as
"rgb(239, 243, 255)" and setting cells.format=[1] before the first render, the
string values are displayed as NaN.

However, if the same base table is rendered first and the same cells.format value
is then applied dynamically through Plotly.restyle, the table displays the original
string values correctly.

The setting is accepted by plotly.py and stored on the trace object, so this looks
like an initial-render formatting/coercion discrepancy in table traces rather than an
invalid Python-side property assignment.

Screenshots/Video
Image Image
Steps to reproduce
import io

import plotly
import plotly.graph_objects as go
import plotly.io as pio
from PIL import Image, ImageChops
from playwright.sync_api import sync_playwright


print(f"Plotly version: {plotly.__version__}")

fig = go.Figure(
    go.Table(
        header={"values": ["Color"]},
        cells={"values": [["rgb(239, 243, 255)", "rgb(8, 81, 156)"]]},
    )
)

# Screenshot 1 / plot1.png: set cells.format in Python before the initial render.
fig.data[0].cells.format = [1]
assert fig.data[0].cells.format == (1,)
print("Python-side cells.format:", fig.data[0].cells.format)
html1 = pio.to_html(fig, full_html=True, include_plotlyjs="cdn")

# Screenshot 2 / plot2.png: render first, then apply the same value with JS.
fig.data[0].cells.format = None
html2 = pio.to_html(fig, full_html=True, include_plotlyjs="cdn")
html2 = html2.replace(
    "</body>",
    """
<script>
window.addEventListener("DOMContentLoaded", () => {
    const plotEl = document.getElementsByClassName("plotly-graph-div")[0];
    setTimeout(() => {
        Plotly.restyle(plotEl, {"cells.format": [1]}, [0]);
    }, 1000);
});
</script>
</body>""",
)

with sync_playwright() as playwright:
    browser = playwright.chromium.launch(
        headless=True,
        args=["--no-sandbox", "--disable-dev-shm-usage", "--disable-gpu"],
    )
    page = browser.new_page(viewport={"width": 1200, "height": 800})

    page.set_content(html1)
    page.wait_for_timeout(1500)
    img1 = page.screenshot(path="plot1.png")

    page.set_content(html2)
    page.wait_for_timeout(2000)
    img2 = page.screenshot(path="plot2.png")

    browser.close()

diff = ImageChops.difference(
    Image.open(io.BytesIO(img1)).convert("RGB"),
    Image.open(io.BytesIO(img2)).convert("RGB"),
)

print("Saved plot1.png and plot2.png")
assert diff.getbbox() is not None, "Reproducer did not reproduce: images are identical."
Notes

Add info here that doesn't fit in the other sections.

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

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.

Issue khác của plotly/plotly.py

Tất cả issue của plotly/plotly.py

Issue tương tự

Thêm issue về Python

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.