customdata parsed incorrectly when array contains more than 1 column in piechart
Đang mở
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ả
When using more than one column to define customdata, the data seems to be parsed as a tuple.
The example below shows three versions of the same figure:
- LEFT. Only one column of
customdata. Works as expected. - CENTER. Two columns of
customdata. The first column incustomdatais not parsed correctly when using a:.1sformat. The second column incustomdatais not parsed correctly byhovertemplateingo.Piebut is parsed correctly bytexttemplate. - RIGHT. Workaround using
customdataas a tuple and selecting its first%{customdata[0][0]}and second%{customdata[0][1]}values accordingly.
import pandas as pd
import plotly.graph_objects as go
from plotly.subplots import make_subplots
df = pd.DataFrame({
'country': ['A', 'B', 'C'],
'count': [10, 20, 30],
'total': [1.5e5, 4.5e4, 3.2e3],
'ratio': [0.05, 0.10, 0.15]
})
fig = make_subplots(rows=1, cols=3, specs=[[{"type": "domain"}, {"type": "domain"}, {"type": "domain"}]])
# customdata parsed correctly with only one column
fig.add_trace(go.Pie(
labels=df['country'],
values=df['count'],
customdata=df[['total']], # 1 column
hovertemplate=(
'Country: %{label}<br>'
'Count: %{value}<br>'
'Total documents: %{customdata[0]:.1s}'),
hole=0.3
),
row=1, col=1)
# Problem with customdata
fig.add_trace(go.Pie(
labels=df['country'],
values=df['count'],
customdata=df[['total', 'ratio']], # >1 columns
hovertemplate=(
'Country: %{label}<br>'
'Count: %{value}<br>'
'Total documents: %{customdata[0]:.1s}<br>'
'Ratio: %{customdata[1]:.2f}'),
texttemplate = "%{customdata[1]:.2p}", # correctly parsed
hole=0.3
),
row=1, col=2)
# Workaround
fig.add_trace(go.Pie(
labels=df['country'],
values=df['count'],
customdata=df[['total', 'ratio']], # >1 columns
hovertemplate=(
'Country: %{label}<br>'
'Count: %{value}<br>'
'Total documents: %{customdata[0][0]:.1s}<br>' # as tuple
'Ratio: %{customdata[0][1]:.2f}'),
texttemplate = "%{customdata[1]:.2p}", # correctly parsed
hole=0.3
),
row=1, col=3)
fig.show()
Tested using:
Plotly.py: 6.0.1
Pandas: 2.1.4
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 bằng cách chạy bản tái hiện Plotly.py và Pandas được cung cấp, sau đó truy vết cách customdata nhiều cột được truyền vào việc định dạng hovertemplate của pie charts. Công việc được xem là hoàn tất khi cả hai cột customdata đều được hiển thị với các định dạng được yêu cầu mà không dùng tuple-style indexing, đồng thời trường hợp một cột và hành vi của texttemplate vẫn chính xác.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- pandas, 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