【Python百日进阶-数据分析】Day136 - plotly旭日图:px.sunburst()实例

news2025/7/9 0:03:08

文章目录

  • 四、实例
    • 4.1 带有 plotly.express 的旭日图
      • 4.1.1 基础旭日图
      • 4.1.2 带有 plotly.express 的矩形 DataFrame 的旭日形
      • 4.1.3 改变path顺序,从而改变父子关系
      • 4.1.4 在 px.sunburst 中具有连续颜色参数的矩形 DataFrame 的 Sunburst
      • 4.1.5 在 px.sunburst 中具有离散颜色参数的矩形 DataFrame 的 Sunburst
      • 4.1.6 对离散颜色使用显式映射
      • 4.1.7 具有缺失值的矩形数据

四、实例

旭日图可视化从根到叶径向向外跨越的分层数据。与Icicle 图表和Treemaps类似,层次结构由labels( namesfor px.icicle) 和parents属性定义。根从中心开始,子代被添加到外环。

4.1 带有 plotly.express 的旭日图

Plotly Express是 Plotly 的易于使用的高级界面,它对各种类型的数据进行操作并生成易于样式化的图形。

使用px.sunburst,DataFrame 的每一行都表示为旭日形的一个扇区。

4.1.1 基础旭日图

import plotly.express as px
data = dict(
    character=["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],
    parent=["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve" ],
    value=[10, 14, 12, 10, 2, 6, 6, 4, 4])

fig = px.sunburst(
    data,
    names='character',
    parents='parent',
    values='value',
)
fig.show()

在这里插入图片描述

4.1.2 带有 plotly.express 的矩形 DataFrame 的旭日形

分层数据通常存储为矩形数据框,不同的列对应于层次结构的不同级别。px.sunburst可以采用path与列列表对应的参数。请注意,path id如果给出,parent则不应提供。

import plotly.express as px
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.sunburst(df, path=['day', 'time', 'sex'], values='total_bill')
fig.show()

在这里插入图片描述

4.1.3 改变path顺序,从而改变父子关系

import plotly.express as px
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.sunburst(df, path=['day', 'sex', 'time'], values='total_bill')
fig.show()

在这里插入图片描述

4.1.4 在 px.sunburst 中具有连续颜色参数的矩形 DataFrame 的 Sunburst

如果color传递了参数,则节点的颜色将计算为其子节点颜色值的平均值,并按其值加权。

import plotly.express as px
import numpy as np
df = px.data.gapminder().query("year == 2007")
print(df)
'''
                 country continent  year  ...     gdpPercap  iso_alpha  iso_num
11           Afghanistan      Asia  2007  ...    974.580338        AFG        4
23               Albania    Europe  2007  ...   5937.029526        ALB        8
35               Algeria    Africa  2007  ...   6223.367465        DZA       12
47                Angola    Africa  2007  ...   4797.231267        AGO       24
59             Argentina  Americas  2007  ...  12779.379640        ARG       32
...                  ...       ...   ...  ...           ...        ...      ...
1655             Vietnam      Asia  2007  ...   2441.576404        VNM      704
1667  West Bank and Gaza      Asia  2007  ...   3025.349798        PSE      275
1679         Yemen, Rep.      Asia  2007  ...   2280.769906        YEM      887
1691              Zambia    Africa  2007  ...   1271.211593        ZMB      894
1703            Zimbabwe    Africa  2007  ...    469.709298        ZWE      716

[142 rows x 8 columns]
'''
fig = px.sunburst(df, path=['continent', 'country'], values='pop',
                  color='lifeExp', hover_data=['iso_alpha'],
                  color_continuous_scale='RdBu',
                  color_continuous_midpoint=np.average(df['lifeExp'], weights=df['pop']))
fig.show()

在这里插入图片描述

4.1.5 在 px.sunburst 中具有离散颜色参数的矩形 DataFrame 的 Sunburst

当 的参数color对应于非数值数据时,使用离散颜色。如果一个扇区的color所有子项的列值相同,则使用相应的颜色,否则使用离散颜色序列的第一种颜色。

import plotly.express as px
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.sunburst(df, path=['sex', 'day', 'time'], values='total_bill', color='day')
fig.show()

在这里插入图片描述
在下面的示例中,Saturday和Sunday扇区的颜色相同,Dinner因为只有周六和周日的晚餐条目。但是,对于女性 -> 星期五,有午餐和晚餐,因此使用“混合”颜色(此处为蓝色)。

import plotly.express as px
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.sunburst(df, path=['sex', 'day', 'time'], values='total_bill', color='time')
fig.show()

在这里插入图片描述

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

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

import plotly.express as px
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.sunburst(df,
                  path=['sex', 'day', 'time'],
                  values='total_bill',
                  color='time',
                  color_discrete_map={'(?)':'black', 'Lunch':'gold', 'Dinner':'darkblue'})
fig.show()

在这里插入图片描述

4.1.7 具有缺失值的矩形数据

如果数据集不是完全矩形,则缺失值应提供为None. 请注意,None条目的父母必须是叶子,即None它不能有其他孩子(否则会引发ValueError)。

    raise ValueError(
ValueError: ('None entries cannot have not-None children', regions    North
vendors     None
sectors    Other
Name: 4, dtype: object)
import plotly.express as px
import pandas as pd
vendors = ["A", "B", "C", "D", None, "E", "F", "G", "H", None]
sectors = ["Tech", "Tech", "Finance", "Finance", "Other",
           "Tech", "Tech", "Finance", "Finance", "Other"]
regions = ["North", "North", "North", "North", "North",
           "South", "South", "South", "South", "South"]
sales = [1, 3, 2, 4, 1, 2, 2, 1, 4, 1]
df = pd.DataFrame(
    dict(vendors=vendors, sectors=sectors, regions=regions, sales=sales)
)
print(df)
'''
  vendors  sectors regions  sales
0       A     Tech   North      1
1       B     Tech   North      3
2       C  Finance   North      2
3       D  Finance   North      4
4    None    Other   North      1
5       E     Tech   South      2
6       F     Tech   South      2
7       G  Finance   South      1
8       H  Finance   South      4
9    None    Other   South      1
'''
fig = px.sunburst(df, path=['regions', 'sectors', 'vendors'], values='sales')
fig.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/109400.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20岁电竞选手自学编程转行程序员,轻松拿下大厂offer

话说 人与人之间的差距 貌似挺小的 毕竟 不管是大佬还是我们 都是两只眼睛、一个鼻子、一张嘴 不多不少 醒醒,别睡了 人和人的差距是很大的! 同样身为互联网冲浪选手 别人干啥啥都行 你却只会在评论区扣“牛X” #01 在多数人的认知里 电竞选…

校园网上报修系统/宿舍报修系统的设计与实现

摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,校园网上报修系统当然也不能排除在外,从报修信息的统计和分析,在过程中会产生大量的、各种各样的数…

Java Number Math 类

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。 实例 int a 5000; float b 13.65f; byte c 0x4a; 然而,在实际开发过程中,我们经常会遇到需要使用对象&…

Java -- OSS对象存储服务(Object Storage Service,简称 OSS)文件服务器

一个成熟的技术架构要有一定的分离性, 平台级的产品一般会这么分:应用服务器、数据库服务器、文件服务器。一般文件、数据库、应用服务器,都应该做逻辑和物理的分离。 以前我们想要做文件上传可能要自己去搭建一个专门的服务器,然…

【Oracle】Oracle学习笔记

【Oracle】Oracle学习笔记 目录【Oracle】Oracle学习笔记P1、Oracle数据库的安装和配置P2、Oracle数据库管理P3-0、初步SQLP3-1、基本SQL SELECT语句课程学习链接: 【尚硅谷】Oracle数据库全套教程,oracle从安装到实战应用 P1、Oracle数据库的安装和配置…

学python以后做什么工作

python是一门很好的编程语言,很多人都在学,那么学完python以后能做什么工作呢?下面小编给大家总结一下。 软件开发,用python做软件是很多人正在从事的工作,不管是B/S软件,还是C/S软件,都能做。…

【自动化测试入门基础知识】离月薪15k的自动化工程师又进了1步

一、首先,什么是自动化测试? 自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的过程一步步执行测试,得到实际结果与期望结果的比较…

Idea 报Error:java:无效的源发行版13

今天运行远程克隆的项目,发现报错为Idea 报Error:java:无效的源发行版13。 主要的原因就是克隆的项目和自己idea的jdk版本不一致。 java无效的源发行版13一、查看jdk版本1、file--setting2、找到java compiler3、选择file---project structure4、选择1.8jdk和85、这…

day06-表单标签及属性

文章目录一、知识回顾:二、单元内容6.1 表单标签6.1.1 表单标签 生活中的表单:网页中的表单:程序员中的表单:运行结果:6.2 表单标签的输入标记6.2.1 表单的文本框和密码框输入标记及提示信息属性文本框 密码框6.2.2 表…

疫情之下,文科生转行学编程靠不靠谱?

毕业季越来越近了,突发的疫情将可能让2023年成为最难就业年!居危思变,在大环境不好的背景下,很多毕业生都准备暂时先不考虑就业,而是继续加强技能学习,待形势好转再继续找工作!而说起当前各行业…

【蓝桥杯】第10届Scratch国赛第6题程序1 -- 捉迷藏

[导读]:蓝桥杯大赛是工业和信息化部人才交流中心举办的全国性专业信息技术赛事。蓝桥杯大赛首席专家倪光南院士说:“蓝桥杯以考促学,塑造了领跑全国的人才培养选拨模式,并获得了行业的深度认可。” 春雷课堂计划推出Scratch蓝桥杯真题解析100讲,这是春雷老师解读Scratch蓝…

Vue3组件化开发(⼀)(二) | webpack

文章目录Vue3组件化开发(⼀)&(二)Vue3的表单和开发模式v-model的基本使用原理vue的开发模式浅学webpackwebpack基础打包认识webpackwebpack安装基本打包webpack局部安装和打包webapck 依赖图css-loaderstyle-loaderless-loade…

Word控件Spire.Doc 【超链接】教程(8):在 C#/VB.NET 中链接到 Word 文档中的书签

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

如何给视频添加水印?这三个加水印的方法让你实现

水印其实就是一种标记,例如公司的名称、品牌名称或者logo,它可以给我们制作的东西起到保护版权的作用,除此之外,它还能起到品牌宣传的作用。所以很多人在发布视频之前,都会在视频上面添加一个或多个专属的水印&#xf…

经验:工具在接口测试中发挥什么样的作用?

接口测试究竟是什么?为什么要用接口测试?它有哪些工具呢?这一连串的问题敲击着我们,请带着这些问题,在本文中寻找答案,我将为您打开接口测试的大门。 1 初探接口测试 接口测试是什么。它检查数据的交换&a…

准备了1个月,面试字节跳动测试工程师“凉经”分享

3月份参加了字节跳动测试工程师的面试,前几天收到的字节跳动测试工程师的拒信,我再一次被扔到人才库了 我此时的心情就是很复杂就是从3月份中旬,我得知我的简历被捞起来之后,我的心情特别高兴,然后把面试时间约到了3月…

C++进阶 多态原理

作者:小萌新 专栏:C进阶 作者简介:大二学生 希望能和大家一起进步! 本篇博客简介:简单介绍C中多态的概念 多态原理多态的原理虚函数表多态的原理为什么对象不能构成多态动态绑定和静态绑定继承多态面试题概念题问答题总…

【SpringBoot+Redis】实现多端登录+token自动续期和定期刷新+自定义注解和拦截器实现鉴权(角色和权限校验)

目录前言思路1、登录、token相关2、鉴权相关实现一、登录1、先定义一个Component组件2、登录、退出二、鉴权、token相关1、自定义注解2、拦截器鉴权、token续期和定期刷新3、新增/更新角色时,更新redis中角色对应的权限4、更新菜单权限标识时,更新redis中…

优优聚:美团成立机器人研究院!

美团成立机器人研究院 不用出门走路购买生活必须品,也不用等待几天的快递时间,现在的消费者越来越习惯“外卖点一切”、半小时送达的购物方式。 在即时零售市场中,美团,无疑是当下的焦点。 万万没想到的是,“外卖送一…

Java+MySQL基于SSM的二手玩具交换网站

本二手玩具交换网站主要包括系统用户管理模块、商品信息管理模块、所有购买记录、订单信息、登录模块、和退出模块等多个模块。它帮助二手玩具交换实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了二手玩具交换数据资源,有效的减少了二…