[BUG]: contours.size initialization does not apply the specified value, but updates via dropdown work correctly
Chưa có ai nhận issue này.
- 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
When initializing a go.Contour trace with a specific contours.size value (e.g., 0.25), the setting is ignored on the initial render, and Plotly defaults to an automatically calculated contour step size.
Interestingly, if the exact same parameter ("contours.size") is later updated dynamically via a layout updatemenus dropdown using the "restyle" method, the chart correctly updates and respects the specified size.
Screenshots/Video
- Initial Render (Buggy): The contours are spaced at default intervals despite
contours.size=0.25being passed to the constructor.
- After Selecting Dropdown (Expected): Selecting "Contour Size: 0.25" from the dropdown forces the chart to restyle, properly displaying the dense 0.25-step contour lines.
Steps to reproduce
- Run the provided Python snippet using
plotly.py. - Observe the initial plot render: notice that the contour lines do not match a step size of 0.25.
- Click the dropdown menu at the top left of the figure.
- Select the "Contour Size: 0.25" option.
- Notice that the plot immediately visualizes a much denser set of contours, behaving as it should have upon initialization.
import plotly
import plotly.graph_objects as go
print(f"Plotly version: {plotly.__version__}")
z_data = [
[10, 10.625, 12.5, 15.625, 20],
[5.625, 6.25, 8.125, 11.25, 15.625],
[2.5, 3.125, 5.0, 8.125, 12.5],
[0.625, 1.25, 3.125, 6.25, 10.625],
[0, 0.625, 2.5, 5.625, 10],
]
fig = go.Figure(
data=go.Contour(
z=z_data,
contours=dict(size=0.25),
colorbar=dict(
title=dict(
text="Color bar title",
side="right",
font=dict(size=14, family="Arial, sans-serif"),
)
),
)
)
# This assertion passes, proving the property is registered in python-land
assert fig.data[0].contours.size == 0.25
fig.update_layout(
updatemenus=[
dict(
type="dropdown",
buttons=[
dict(
label="Contour Size: 0.25",
method="restyle",
args=[{"contours.size": 0.25}],
),
dict(
label="Contour Size: 1.0",
method="restyle",
args=[{"contours.size": 1.0}],
),
dict(
label="Contour Size: 2.0",
method="restyle",
args=[{"contours.size": 2.0}],
),
],
)
]
)
fig.show()
Notes
- The internal Python object structure correctly holds the
contours.sizevalue (as verified by the passingassert fig.data[0].contours.size == 0.25statement). - The version of plotly.py is 6.8.0.
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- 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.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Bắt đầu với bản tái hiện Python được cung cấp, đặc biệt là go.Contour và phép gán contours.size, sau đó so sánh quá trình render ban đầu với đường dẫn restyle của layout updatemenus. Theo dõi nơi giá trị của constructor được truyền vào quá trình render và xác minh rằng contours.size ban đầu bằng 0.25 tạo ra khoảng cách giữa các đường đồng mức giống với khi chọn tùy chọn trong dropdown.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- plotly, 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
- Ít trao đổi
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 55/100