You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Plotly饼图中添加带百分比与记录数的指示箭头?

解决Plotly饼图添加指示箭头与自定义文本的问题

核心修改点

要实现带指示箭头、同时显示百分比和记录数的效果,需完成两个关键调整:

  • 启用饼图的指示箭头(通过pull参数)
  • 自定义文本内容,结合百分比与记录数信息

修改后的完整代码

import pandas as pd
import plotly.express as px
from sklearn.model_selection import train_test_split

moneyFlow = pd.read_excel('moneyFlow.xlsx').drop(columns=['Unnamed: 0'])
X = moneyFlow.drop(["Sentiment"], axis=1)
y = moneyFlow["Sentiment"]

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)

split_df = pd.DataFrame({
    'DataSplit': ['Train', 'Test'],
    'Percentage': [round((len(X_train) / len(X)) * 100, 3), round((len(X_test) / len(X)) * 100, 3)],
    'Number of Records': [len(X_train), len(X_test)]
})

# 生成自定义显示文本,格式为「百分比% (记录数)」
split_df['DisplayText'] = split_df.apply(lambda row: f"{row['Percentage']}% ({row['Number of Records']})", axis=1)

fig = px.pie(split_df, values='Percentage', names='DataSplit', color="DataSplit",
             title='Percentage of Data Split using train_test_split',
             labels={'Percentage': 'Percentage (%)'},
             hover_data=['Number of Records'],
             hole=0.3,
             color_discrete_map={'Train':'darkblue', 'Test':'royalblue'})

# 配置指示箭头与自定义文本
fig.update_traces(
    textinfo='text',
    text=split_df['DisplayText'],
    pull=[0.05, 0.05],  # 拉出饼块以显示箭头,数值可按需调整
    textposition='outside'
)

fig.show()

关键说明

  • 自定义文本:通过apply方法生成包含百分比和记录数的组合文本,避开textinfo默认参数的限制
  • 指示箭头:设置pull参数让饼块轻微向外拉出,Plotly会自动生成连接饼块与文本的指示箭头;textposition='outside'确保文本显示在饼块外侧
  • 样式调整:pull的数值可根据视觉需求修改,数值越大,饼块拉出的距离越远,箭头效果越明显

内容的提问来源于stack exchange,提问作者Riddle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 03:37:19