【Python百日进阶-数据分析】Day133 - plotly饼图:px.pie()实例

news/2024/11/17 2:53:36/

文章目录

  • 四、实例
    • 4.1 带有 plotly express 的饼图
      • 4.1.1 欧洲大陆的人口
      • 4.1.2 带有重复标签的饼图
      • 4.1.3 使用 px.pie 设置饼图扇区的颜色
      • 4.1.4 对离散颜色使用显式映射
      • 4.1.5 自定义使用 px.pie 创建的饼图
      • 4.1.13 Dash 中的饼图

四、实例

饼图是一种圆形统计图表,它被划分为扇区来说明数字比例。
如果您正在寻找多级分层饼状图表,请转到 Sunburst 教程。

4.1 带有 plotly express 的饼图

Plotly Express是 Plotly 的易于使用的高级界面,它对各种类型的数据进行操作并生成易于样式化的图形。
在px.pie中,由饼图的扇区可视化的数据设置在 中values。扇区标签设置在names.

4.1.1 欧洲大陆的人口

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()

在这里插入图片描述

4.1.2 带有重复标签的饼图

具有相同值的数据帧的行在names同一扇区中组合在一起。

import plotly.express as px
# 这个数据框有244行,但是“day”有4个不同的值`
df = px.data.tips()
print(df)
'''total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2[244 rows x 7 columns]
'''
fig = px.pie(df, values='tip', names='day')
fig.show()

在这里插入图片描述

4.1.3 使用 px.pie 设置饼图扇区的颜色

import plotly.express as px
df = px.data.tips()
'''total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2[244 rows x 7 columns]
'''
fig = px.pie(df, values='tip', names='day', color_discrete_sequence=px.colors.sequential.RdBu)
fig.show()

在这里插入图片描述

4.1.4 对离散颜色使用显式映射

有关离散颜色的更多信息,请参阅专用页面。

import plotly.express as px
df = px.data.tips()
'''total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2[244 rows x 7 columns]
'''
fig = px.pie(df, values='tip', names='day', color='day',color_discrete_map={'Thur':'lightcyan','Fri':'cyan','Sat':'royalblue','Sun':'darkblue'})
fig.show()

在这里插入图片描述

4.1.5 自定义使用 px.pie 创建的饼图

在下面的示例中,我们首先创建一个带有 的饼图px,pie,使用它的一些选项,例如hover_data(哪些列应该出现在悬停中)或labels(重命名列名)。为了进一步调整,我们调用fig.update_traces设置图表的其他参数(您也可以fig.update_layout用于更改布局)。

import plotly.express as px
df = px.data.gapminder().query("year == 2007").query("continent == 'Americas'")
print(df)
'''country continent  year  ...     gdpPercap  iso_alpha  iso_num
59              Argentina  Americas  2007  ...  12779.379640        ARG       32
143               Bolivia  Americas  2007  ...   3822.137084        BOL       68
179                Brazil  Americas  2007  ...   9065.800825        BRA       76
251                Canada  Americas  2007  ...  36319.235010        CAN      124
287                 Chile  Americas  2007  ...  13171.638850        CHL      152
311              Colombia  Americas  2007  ...   7006.580419        COL      170
359            Costa Rica  Americas  2007  ...   9645.061420        CRI      188
395                  Cuba  Americas  2007  ...   8948.102923        CUB      192
443    Dominican Republic  Americas  2007  ...   6025.374752        DOM      214
455               Ecuador  Americas  2007  ...   6873.262326        ECU      218
479           El Salvador  Americas  2007  ...   5728.353514        SLV      222
611             Guatemala  Americas  2007  ...   5186.050003        GTM      320
647                 Haiti  Americas  2007  ...   1201.637154        HTI      332
659              Honduras  Americas  2007  ...   3548.330846        HND      340
791               Jamaica  Americas  2007  ...   7320.880262        JAM      388
995                Mexico  Americas  2007  ...  11977.574960        MEX      484
1115            Nicaragua  Americas  2007  ...   2749.320965        NIC      558
1187               Panama  Americas  2007  ...   9809.185636        PAN      591
1199             Paraguay  Americas  2007  ...   4172.838464        PRY      600
1211                 Peru  Americas  2007  ...   7408.905561        PER      604
1259          Puerto Rico  Americas  2007  ...  19328.709010        PRI      630
1559  Trinidad and Tobago  Americas  2007  ...  18008.509240        TTO      780
1619        United States  Americas  2007  ...  42951.653090        USA      840
1631              Uruguay  Americas  2007  ...  10611.462990        URY      858
1643            Venezuela  Americas  2007  ...  11415.805690        VEN      862[25 rows x 8 columns]
'''
fig = px.pie(df, values='pop', names='country',title='美洲大陆的人口',hover_data=['lifeExp'], labels={'lifeExp':'预期寿命'})
fig.update_traces(textposition='inside', textinfo='percent+label')
fig.show()

在这里插入图片描述

4.1.13 Dash 中的饼图

Dash是使用 Plotly 图形在 Python 中构建分析应用程序的最佳方式。要运行下面的应用程序,运行pip install dash,单击“下载”以获取代码并运行python app.py。

开始使用官方 Dash 文档,了解如何使用Dash Enterprise轻松设计和部署此类应用程序。

import dash
from dash import html, dcc
from dash.dependencies import Input, Output
import plotly.express as px# 这个数据框有244行,但是“day”有4个不同的值`
df = px.data.tips()
print(df)
'''total_bill   tip     sex smoker   day    time  size
0         16.99  1.01  Female     No   Sun  Dinner     2
1         10.34  1.66    Male     No   Sun  Dinner     3
2         21.01  3.50    Male     No   Sun  Dinner     3
3         23.68  3.31    Male     No   Sun  Dinner     2
4         24.59  3.61  Female     No   Sun  Dinner     4
..          ...   ...     ...    ...   ...     ...   ...
239       29.03  5.92    Male     No   Sat  Dinner     3
240       27.18  2.00  Female    Yes   Sat  Dinner     2
241       22.67  2.00    Male    Yes   Sat  Dinner     2
242       17.82  1.75    Male     No   Sat  Dinner     2
243       18.78  3.00  Female     No  Thur  Dinner     2[244 rows x 7 columns]
'''app = dash.Dash(__name__)app.layout = html.Div([html.P("Names:"),dcc.Dropdown(id='names',value='day',options=[{'value': x, 'label': x}for x in ['smoker', 'day', 'time', 'sex']],clearable=False),html.P("Values:"),dcc.Dropdown(id='values',value='total_bill',options=[{'value': x, 'label': x}for x in ['total_bill', 'tip', 'size']],clearable=False),dcc.Graph(id="pie-chart"),
])@app.callback(Output("pie-chart", "figure"),[Input("names", "value"),Input("values", "value")])
def generate_chart(names, values):fig = px.pie(df, values=values, names=names)return figapp.run_server(debug=True)

在这里插入图片描述


http://www.ppmy.cn/news/4992.html

相关文章

C++ · 入门 | 准备知识

啊我摔倒了..有没有人扶我起来学习.... &#x1f471;个人主页&#xff1a;《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ &#x1f492;个人社区&#xff1a;《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

JDBC的简单使用与封装

目录 1、JDBC 2、JDBC的常用接口 1.Driver接口 2.Connection接口 3.Statement接口 4.ResultSet接口 3、JDBC的基本使用 1&#xff09;、简单的增删查改 Ⅰ、查 Ⅱ、增 Ⅲ、改 Ⅳ、删 2&#xff09;简单封装 1、JDBC 我们先了解JDBC是什么&#xff0c;JDBC的全称是Java数…

11、Mysql高级之SQL优化

11、Mysql高级之SQL优化 文章目录11、Mysql高级之SQL优化0 SQL优化1 大批量插入数据2 优化insert语句3 优化order by语句3.1 环境准备3.2 两种排序方式3.3 Filesort 的优化4 优化group by 语句5 优化嵌套查询6 优化OR条件7 优化分页查询7.1 优化思路一7.2 优化思路二8 使用SQL提…

19. 删除链表的倒数第 N 个结点

文章目录题目描述做题思路代码实现题目链接题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;hea…

Uniapp安卓apk原生云端打包完整过程

1.进入HbuliderX,找到菜单的发行 2.选择原生App-云打包&#xff0c;接着会弹出一个对话框&#xff0c;如图&#xff1a; 3.在对话框中勾选Andriod&#xff08;apk包&#xff09;、选择使用云端证书。 证书说明如下&#xff1a; (1)使用自有证书&#xff1a;开发者自己生成…

linux驱动开发笔记一

Linux操作系统 1&#xff0c;Linux操作系统基础&#xff1a; 1&#xff09;&#xff0c;基础知识 第一块处理器&#xff1a;intel 4004 Intel 8008 &#xff0c;i8086&#xff0c;…协处理器&#xff08;主从机制&#xff09;&#xff1b; 80386&#xff0c;80586&#xff0c;奔…

【C语言数据结构(基础版)】第四站:栈和队列

目录 一.栈的表示和实现 1.栈的概念及结构 2.栈的实现 二、栈的实现 1.栈的声明和定义 2.栈的初始化 3.栈的销毁 4.入栈 5.出栈 6.返回栈顶元素 7.返回栈的元素个数 8.栈是否为空 9.测试 三、栈的完整代码 四、队列的表示和实现 1.队列的概念和结构 2.队列的实现…

idea中推送本地仓库和远程仓库后代码回退

本地仓库代码提交后回退 提交到本地仓库后 点击提交后会保存在本地仓库 本地仓库的回撤 找到git的提交记录 右键选择撤销还原 撤销还原后会出现提交文件&#xff0c;成功将本地仓库的文件移除&#xff0c;但是本地的错误代码仍然存在 如果想撤销提交到本地仓库的错误文…