Plotly.py 饼图(Pie Charts)完全指南

Plotly.py 饼图(Pie Charts)完全指南

plotly.py The interactive graphing library for Python :sparkles: This project now includes Plotly Express! plotly.py 项目地址: https://gitcode.com/gh_mirrors/pl/plotly.py

饼图(Pie Chart)是一种常见的统计图表,通过将圆形分割成不同扇形来展示各部分在整体中的比例关系。本文将全面介绍如何使用 Plotly.py 库创建和定制各种饼图。

基础饼图创建

使用 Plotly Express 可以快速创建基础饼图:

import plotly.express as px
df = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries'
fig = px.pie(df, values='pop', names='country', title='欧洲大陆人口分布')
fig.show()

在这个例子中:

  • values 参数指定了每个扇形的大小
  • names 参数指定了扇形的标签
  • 对于人口小于200万的国家,我们将其合并为"Other countries"类别

饼图高级定制

颜色控制

Plotly 提供了多种方式控制饼图的颜色:

  1. 使用预定义的颜色序列:
fig = px.pie(df, values='tip', names='day', 
             color_discrete_sequence=px.colors.sequential.RdBu)
  1. 自定义颜色映射:
fig = px.pie(df, values='tip', names='day', color='day',
             color_discrete_map={'Thur':'lightcyan',
                               'Fri':'cyan',
                               'Sat':'royalblue',
                               'Sun':'darkblue'})

文本标签控制

可以调整饼图中文本标签的显示方式和位置:

fig.update_traces(textposition='inside', textinfo='percent+label')

textinfo 参数可以组合使用:

  • label:显示分类标签
  • percent:显示百分比
  • value:显示实际值

统一文本大小

使用 uniformtext 布局参数可以确保所有标签具有相同大小:

fig.update_layout(uniformtext_minsize=12, uniformtext_mode='hide')

特殊饼图类型

环形图(Donut Chart)

通过设置 hole 参数创建环形图:

fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.3)])

hole 取值在0-1之间,表示中心孔洞占整个饼图的比例。

突出显示扇形

使用 pull 参数可以将特定扇形从中心拉出:

fig = go.Figure(data=[go.Pie(labels=labels, values=values, 
                            pull=[0, 0, 0.2, 0])])

子图中的饼图

可以在一个图中放置多个饼图:

from plotly.subplots import make_subplots

fig = make_subplots(rows=1, cols=2, specs=[[{'type':'domain'}, {'type':'domain'}]])
fig.add_trace(go.Pie(labels=labels1, values=values1), 1, 1)
fig.add_trace(go.Pie(labels=labels2, values=values2), 1, 2)

高级特性

纹理填充

Plotly 5.15+ 支持为饼图添加纹理:

fig = go.Figure(data=[go.Pie(
    labels=labels,
    values=values,
    marker=dict(colors=colors, 
               pattern=dict(shape=[".", "x", "+", "-"]))
)])

文本方向控制

insidetextorientation 参数控制扇形内文本的方向:

  • "auto":自动旋转以适应扇形
  • "horizontal":强制水平
  • "radial":径向排列
  • "tangential":切向排列
fig.update_traces(insidetextorientation='radial')

饼图最佳实践

  1. 限制分类数量:饼图适合展示5-7个分类,过多会导致难以辨认

  2. 排序扇形:按大小排序扇形有助于比较

  3. 避免3D效果:3D饼图容易造成视觉误导

  4. 考虑替代方案:对于复杂数据,柱状图或堆叠柱状图可能是更好的选择

通过掌握这些技巧,你可以使用 Plotly.py 创建出既美观又专业的饼图来有效展示你的数据。

plotly.py The interactive graphing library for Python :sparkles: This project now includes Plotly Express! plotly.py 项目地址: https://gitcode.com/gh_mirrors/pl/plotly.py

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

农芬焰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值