【四 (4)数据可视化之 Ploty Express常用图表及代码实现 】

目录

    • 文章导航
    • 一、介绍
    • 二、安装Plotly Express
    • 三、导入Plotly Express
    • 四、占比类图表
      • 1、饼图
      • 2、环形图
      • 3、堆叠条形图
      • 4、百分比堆叠条形图
    • 五、比较排序类
      • 1、条形图
      • 2、漏斗图
      • 3、面积漏斗图
    • 六、趋势类图表
      • 1、折线图
      • 2、多图例折线图
      • 3、分列折线图
      • 4、面积图
      • 5、多图例面积图
    • 七、频率分布类
      • 1、直方图
      • 2、箱线图
    • 八、关系类图表
      • 1、散点图
      • 2、分列散点图
      • 3、气泡图
      • 4、热力图
      • 5、成对关系图

文章导航

【一 简明数据分析进阶路径介绍(文章导航)】

一、介绍

plotly是一个基于javascript的绘图库,python语言对相关参数进行了封装,ploty默认是生成HTML网页文件,通过浏览器查看,也可以在jupyter notebook中显示。

二、安装Plotly Express

pip install plotly

三、导入Plotly Express

import plotly.express as px

四、占比类图表

1、饼图

import plotly.express as px  
import pandas as pd  # 假设我们有以下数据  
data = {  '类别': ['类别A', '类别B', '类别C', '类别D'],  '值': [20, 30, 15, 35]  
}  
df = pd.DataFrame(data)  # 绘制饼图  
fig = px.pie(df, values='值', names='类别', title='饼图示例')  fig.update_traces(textposition='inside', textinfo='percent+label')  
fig.show()

在这里插入图片描述

2、环形图

import plotly.express as px  
import pandas as pd  # 环形图其实就是带孔的饼图  
fig = px.pie(df, values='值', names='类别', title='环形图示例', hole=.3)  
fig.update_layout(  font_family="SimHei",  title_font_size=16,  legend_title_text='类别',  legend_font_size=12  
)  
fig.update_traces(textposition='inside', textinfo='percent+label')  
fig.show()

在这里插入图片描述

3、堆叠条形图

import plotly.express as px  
import pandas as pd  
# 假设我们有以下数据,包含多个分类和它们的值  
data = {  '年份': ['2020', '2020', '2021', '2021'],  '类别': ['A', 'B', 'A', 'B'],  '值': [10, 15, 20, 25]  
}  
df = pd.DataFrame(data)  # 绘制堆叠条形图  
fig = px.bar(df, x='年份', y='值', color='类别', barmode='stack', title='堆叠条形图示例')    def set_text(trace):  trace.text = [f"{val:.1f}" for val in trace.y]  trace.textposition = 'outside'  fig.for_each_trace(set_text)  
fig.show()

在这里插入图片描述

4、百分比堆叠条形图

import plotly.express as px  
import pandas as pd  # 假设数据  
data = {  '年份': ['2020', '2020', '2021', '2021'],  '类别': ['A', 'B', 'A', 'B'],  '值': [10, 15, 20, 25]  
}  
df = pd.DataFrame(data)  # 计算每个年份的总值,用于计算百分比  
df['总值'] = df.groupby('年份')['值'].transform('sum')  
df['百分比'] = (df['值'] / df['总值']) * 100  # 绘制堆叠条形图  
fig = px.bar(df, x='年份', y='百分比', color='类别', barmode='stack', title='百分比堆叠条形图示例')  # 遍历每个轨迹并设置文本  
def set_text(trace):  trace.text = [f"{val:.1f}%" for val in trace.y]  trace.textposition = 'outside'  fig.for_each_trace(set_text)  # 显示图表  
fig.show()  

在这里插入图片描述

五、比较排序类

1、条形图

import plotly.express as px  
import pandas as pd  # 假设我们有以下数据  
data = {  '类别': ['A', 'B', 'C', 'D'],  '值': [20, 35, 30, 25]  
}  
df = pd.DataFrame(data)  # 绘制条形图  
fig = px.bar(df, x='类别', y='值', title='条形图示例')  # 遍历每个轨迹并设置文本  
def set_text(trace):  trace.text = [f"{val:.1f}" for val in trace.y]  trace.textposition = 'outside'  fig.for_each_trace(set_text)  # 显示图表  
fig.show()

在这里插入图片描述

2、漏斗图

import plotly.express as px  
import pandas as pd  data = dict(number=[10000,7000,4000,2000,1000],stage=["浏览次数","关注数量","下载数量","咨询数量","成交数量"])
fig = px.funnel(data,x='number',y='stage')# 显示图表  
fig.show()  

在这里插入图片描述

3、面积漏斗图

import plotly.express as px  
import pandas as pd  data = dict(number=[10000,7000,4000,2000,1000],stage=["浏览次数","关注数量","下载数量","咨询数量","成交数量"])
fig = px.funnel_area(names=data['stage'],values=data['number'])# 显示图表  
fig.show()  

在这里插入图片描述

六、趋势类图表

1、折线图

import plotly.express as px  
import pandas as pd  # 假设的数据集  
data = {  '月份': ['1月', '2月', '3月', '4月', '5月', '6月'],  '销售额': [12000, 15000, 18000, 13000, 16000, 19000]  
}  # 创建Pandas DataFrame  
df = pd.DataFrame(data)  # 使用Plotly Express绘制折线图  
fig = px.line(df, x='月份', y='销售额', title='每月销售额趋势', labels={'月份': '月份', '销售额': '销售额'})  # 显示图表  
fig.show()

在这里插入图片描述

2、多图例折线图

import plotly.express as px  
import pandas as pd  # 假设的数据集,包含两个不同类别的销售额  
data = {  '月份': ['1月', '2月', '3月', '4月', '5月', '6月'],  '线上销售额': [12000, 15000, 18000, 13000, 16000, 19000],  '线下销售额': [8000, 10000, 12000, 14000, 11000, 13000]  
}  # 创建Pandas DataFrame  
df = pd.DataFrame(data)  # 使用Plotly Express绘制多图例折线图  
fig = px.line(df, x='月份', y=['线上销售额', '线下销售额'], title='每月线上与线下销售额趋势')  # 显示图表  
fig.show()

在这里插入图片描述

3、分列折线图

import plotly.express as px  
import pandas as pd  
import numpy as np  # 创建示例数据  
np.random.seed(0)  
date_rng = pd.date_range(start='2023-01-01', periods=12, freq='M')  # 生成12个月的日期范围  
categories = ['Category1', 'Category2']  # 分类变量  
subcategories = ['Sub1', 'Sub2', 'Sub3']  # 子分类变量  # 生成时间序列数据  
df = pd.DataFrame()  
for cat in categories:  for subcat in subcategories:  data = np.random.rand(len(date_rng))  # 随机生成数据  df = df.append(pd.DataFrame({  'Date': date_rng,  'Category': cat,  'Subcategory': subcat,  'Value': data  }), ignore_index=True)  # 将Date列转换为pandas的日期格式  
df['Date'] = pd.to_datetime(df['Date'])  # 设置Date列为索引,以便在折线图中使用它作为x轴  
df.set_index('Date', inplace=True)  # 绘制分列折线图  
fig = px.line(df, x=df.index, y='Value', color='Subcategory',  #facet_row='Category',  # 按照Category进行分行展示  facet_col='Category',  # 按照Category进行分列展示  title='分列折线图示例',  labels={'Value': '数值', 'Subcategory': '子类别'},  width=1000, height=600)  # 显示图表  
fig.show()

在这里插入图片描述

4、面积图

import plotly.express as px  
import pandas as pd  # 假设的数据集  
data = {  '月份': ['1月', '2月', '3月', '4月', '5月', '6月'],  '销售额': [12000, 15000, 18000, 13000, 16000, 19000]
}  # 创建Pandas DataFrame  
df = pd.DataFrame(data)  # 计算累积销售额  
df['累积销售额'] = df['销售额'].cumsum()  
# 使用Plotly Express绘制面积图  
fig = px.area(df, x='月份', y='累积销售额', title='累积销售额趋势', labels={'月份': '月份', '累积销售额': '累积销售额'})  # 设置面积图的颜色填充
fig.update_traces(fill='tonexty', fillcolor='lightskyblue')# 显示图表
fig.show()

在这里插入图片描述

5、多图例面积图

import plotly.express as px  
import pandas as pd  # 假设的数据集  
data = {  '月份': ['1月', '2月', '3月', '4月', '5月', '6月'],  '产品A销售额': [1000, 1200, 1500, 1300, 1600, 1800],  '产品B销售额': [800, 1000, 1100, 1400, 1500, 1700]  
}  # 创建Pandas DataFrame  
df = pd.DataFrame(data)  # 使用Plotly Express绘制多图例面积图  
fig = px.area(df, x='月份', y=['产品A销售额', '产品B销售额'],   title='不同产品销售额趋势',  labels={'月份': '月份', '产品A销售额': '产品A销售额', '产品B销售额': '产品B销售额'},  color_discrete_sequence=['#1f77b4', '#ff7f0e'])  # 更新图表的样式和布局  
fig.update_layout(  xaxis=dict(  titlefont=dict(size=16, color='black'),  tickfont=dict(size=12),  ),  yaxis=dict(  titlefont=dict(size=16, color='black'),  tickfont=dict(size=12),  ),  legend=dict(  x=0.01,  y=0.99,  bgcolor='rgba(255, 255, 255, 0.8)',  bordercolor='rgba(0, 0, 0, 0.5)'  ),  font=dict(  size=12,  color='black'  ),  plot_bgcolor='rgba(240, 240, 240, 1)',  # 设置背景色  paper_bgcolor='rgba(240, 240, 240, 1)',  # 设置画布背景色  margin=dict(l=40, r=40, t=60, b=30)  # 设置图表边距  
)  # 显示图表  
fig.show()

在这里插入图片描述

七、频率分布类

1、直方图

import plotly.express as px  
import numpy as np  # 生成一个正态分布的数据集  
np.random.seed(0)  # 设置随机种子以便结果可复现  
data = np.random.normal(loc=0, scale=1, size=1000)  # 生成均值为0,标准差为1的正态分布数据  # 创建一个简单的DataFrame来存储数据  
df = pd.DataFrame(data, columns=['值'])# 绘制直方图  
fig = px.histogram(df, x='值', nbins=30, title='数据集的直方图示例',  histnorm='probability density',  # 归一化为概率密度  opacity=0.8,  # 设置条形的透明度  color_discrete_sequence=['#4E79A7'])  # 设置条形的颜色  # 更新布局以美化图表  
fig.update_layout(  font_family="SimHei",  # 使用支持中文的字体  title_font_size=16,  # 标题字体大小  xaxis_title_text='值',  # x轴标题  yaxis_title_text='概率密度',  # y轴标题  xaxis_tickfont_size=12,  # x轴刻度字体大小  yaxis_tickfont_size=12,  # y轴刻度字体大小  barmode='overlay',  # 设置条形的堆叠模式(如果需要的话)  bargap=0.1,  # 设置条形之间的间隙  bargroupgap=0.1  # 设置组之间的间隙  
)  # 显示图表  
fig.show()

在这里插入图片描述

2、箱线图

import plotly.express as px  # 假设我们有以下数据,包含分类列'category'和数值列'value'  
data = {  'category': ['A', 'A', 'B', 'B', 'C', 'C', 'D', 'D'],  'value': [1, 2, 5, 4, 3, 7, 6, 8]  
}  
df = pd.DataFrame(data)  # 绘制箱线图  
fig = px.box(df, x='category', y='value', title='箱线图示例')  fig.show()

在这里插入图片描述

八、关系类图表

1、散点图

import plotly.express as px  
import pandas as pd  
import numpy as np  # 创建示例数据  
np.random.seed(0)  
df = pd.DataFrame({  'x': np.random.randn(200),  'y': np.random.randn(200),  'category': np.random.choice(['A', 'B', 'C'], 200)  
})  # 绘制散点图  
fig = px.scatter(df, x='x', y='y', color='category',  title='散点图示例',  labels={'x': 'X轴变量', 'y': 'Y轴变量', 'category': '类别'},  width=800, height=600)  # 显示图表  
fig.show()

在这里插入图片描述

2、分列散点图

import plotly.express as px  
import pandas as pd  
import numpy as np  # 创建示例数据  
np.random.seed(0)  
df = pd.DataFrame({  'Category': np.repeat(['A', 'B'], 200),  'X': np.concatenate((np.random.randn(200) + 2, np.random.randn(200) - 2)),  'Y': np.concatenate((np.random.randn(200) + 2, np.random.randn(200) - 2)),  'Subcategory': np.tile(['Sub1', 'Sub2', 'Sub3', 'Sub4'], 100)  
})  # 绘制分列散点图  
fig = px.scatter(df, x='X', y='Y', color='Subcategory',  facet_col='Category',  title='分列散点图示例',  labels={'X': 'X轴数据', 'Y': 'Y轴数据', 'Subcategory': '子类别'},  width=1000, height=600,  facet_col_wrap=2 # 设置每行显示的子图数量  )  # 显示图表  
fig.show()

在这里插入图片描述

3、气泡图

import plotly.express as px  
import pandas as pd  
import numpy as np  # 创建一个简单的DataFrame作为示例  
np.random.seed(0)  # 设置随机种子以便结果可复现  
df = pd.DataFrame({  'x': np.random.randn(200),  # x轴数据  'y': np.random.randn(200),  # y轴数据  'size': np.random.uniform(10, 50, 200),  # 气泡大小  'category': np.random.choice(['A', 'B', 'C', 'D'], 200)  # 气泡的类别  
})  # 使用px.scatter绘制气泡图  
fig = px.scatter(df, x='x', y='y', size='size', color='category',  title='气泡图示例',  labels={'x': 'X轴数据', 'y': 'Y轴数据', 'size': '大小', 'category': '类别'},  hover_data=['size', 'category'],  # 鼠标悬停时显示的数据  log_x=False,  # 是否对X轴使用对数尺度,这里我们不使用  width=800, height=600)  # 显示图表  
fig.show()   

在这里插入图片描述

4、热力图

import seaborn as sns  # 创建随机二维数据矩阵  
data = np.random.rand(10, 12)  
df_heat = pd.DataFrame(data, columns=[f'Col{i}' for i in range(1, 13)],  index=[f'Row{i}' for i in range(1, 11)])  # 绘制热力图  
fig = px.imshow(df_heat,  title='热力图示例',  labels=dict(x="列", y="行", color="值"),  x=df_heat.columns, y=df_heat.index,  color_continuous_scale='viridis',  width=800, height=600)  # 显示图表  
fig.show()

在这里插入图片描述

5、成对关系图

import seaborn as sns  # 使用内置的iris数据集作为示例  
df_iris = px.data.iris()  # 绘制成对关系图  
fig = px.scatter_matrix(df_iris,  dimensions=['sepal_length', 'sepal_width', 'petal_length', 'petal_width'],  color='species',  title='成对关系图示例',  width=1000, height=800)  # 显示图表  
fig.show()

在这里插入图片描述

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

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

相关文章

逻辑数据平台的 NoETL 之道(内含QA)

作者简介: 余俊,Aloudata 合伙人 & 技术副总裁。拥有 18 年互联网技术和大数据平台相关架构经验。作为主架构师及核心研发主导并完成了 Alibaba B2B 首个海量分布式 KV 存储系统,作为网站架构师负责 Aliexpress 全球买全球卖交易系统的第…

【云原生-kubernetes系列】--kubernetes日志收集

1、ELK架构 1.1、部署ES集群 https://mirrors.tuna.tsinghua.edu.cn/elasticstack/apt/7.x/pool/main/e/elasticsearch/ 1、下载软件包 rootes-server1:~# wget https://mirrors.tuna.tsinghua.edu.cn/elasticstack/apt/7.x/pool/main/e/elasticsearch/elasticsearch-7.12.0-…

STL库中的string

文章目录 一、STL的六大组件二、string类2.1string中的size()方法2.2隐式类型的转换2.3string的多种构造2.4string中size与length是否有差异?2.4string中的capacity2.5string中的push_back和append2.6string中运算符重载operator2.7string中的reserve扩容2.8string中…

数据结构——字符串

1.leetcode 151 题目链接: . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/reverse-words-in-a-string/…

体验OceanBase OBD V2.5.0 组件内扩容和组件变更

背景 OBD 是OceanBase的命令行部署工具,在 obd V2.5.0 版本之前,其主要功能主要是部署各类组件,例如 oceanbase-ce,obproxy-ce,obagent 等。然而,它并不支持组件的变更操作以及组件内部的扩缩容调整。具体来说: 1、若…

网络层_IP

传输层解决的是传输控制,而实际真正决定数据能否发送到对端的是网络层。网络层是有概率传输,而传输层是可靠性传输。所以传输层网络层就可以做到将数据可靠发送到对端。网络层的常见协议有:IP、ICMP等,其中最重要的是IP协议&#…

STM32F103 CubeMX 使用USB生成鼠标设备

STM32F103 CubeMX 使用USB生成鼠标设备 1 配置cubeMX1.1配置外部晶振,配置debug口1.2 配置USB1.3 配置芯片的时钟1.4 生成工程 2. 编写代码2.1 添加申明2.2 main函数代码 1 配置cubeMX 1.1配置外部晶振,配置debug口 1.2 配置USB 1.3 配置芯片的时钟 需…

云与云计算:从传统到云端的IT资源变革

云:从分散到集约,资源服务化的新模式 让我们先通过一个生活化的场景来理解“云”这一概念。几十年前,诸如农村地区的居民需要自给自足,比如在自家院子里打井取水,冬季烧煤取暖,一切满足自己生活需要的都要…

html和winform webBrowser控件交互并播放视频(包含转码)

1、 为了使网页能够与winform交互 将com的可访问性设置为真 [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name "FullTrust")][System.Runtime.InteropServices.ComVisibleAttribute(true)] 2、在webBrow…

idea+vim+pycharm的块选择快捷键

平时开发的时候,有的时候我们想用矩形框住代码,或者想在某列上插入相同字符 例如下图所示,我想在22-24行的前面插入0000 1. Idea的快捷键:option 鼠标 2. Pycharm的快捷键:shift option 鼠标 2. Vim 块选择 v/V/c…

spy分析文件另存为弹框【selenium】

有时需要下载多个文件,但是不想保存在同一个目录下,需要做两步 selenium设置浏览器默认下载路径,这个路径需要是个不存在的路径操作文件另存为弹框 文章目录 selenium设置浏览器默认下载路径操作文件另存为弹框 selenium设置浏览器默认下载路…

Github和TeamCity的持续集成构建

一、简介 TeamCity是JetBrains旗下的一款持续集成[Continuous Integration,简称CI]工具,开箱即用。TeamCity提供一系列特性可以让团队快速实现持续集成:IDE工具集成、各种消息通知、各种报表、项目的管理、分布式的编译等等。 二、安装使用(…

Excel xlsx file:not supported

报错信息: 原因: Excel和xlrd版本不匹配 解决措施: 降低xlrd版本或Excel版本 方法一: 1) 先卸载了原来的版本:uninstal xlrd 2) 安装新的低版本xlrd模块pip install xlrd1.2.0 方法二: 1&#xff09…

AI日报:欧盟人工智能法案通过后行业面临合规障碍

文章目录 人工智能新规对web爬网的影响对英国的影响。 人工智能新规 立法者已经通过了欧盟人工智能法案。企业现在必须确保其人工智能应用程序符合规则。 全面的新规定对可能影响公民权利的人工智能系统实施制裁,并有可能彻底禁止某些系统。 违反规定的公司可能面…

【类和对象】类的作用域 | 类的实例化 | 类对象模型 | this指针

目录 5.类的作用域 6.类的实例化 6.1成员的声明和定义 6.2实例化出的对象大小 7.类对象模型❗❗ 7.1如何计算类对象的大小 7.2类对象的存储方式猜测 7.3结构体内存对齐规则 7.3.1内存对齐 7.3.2大小端 8.this指针 8.1this指针的引出 8.2this指针的特性 C和C实…

MySQL—redo log、undo log以及MVCC

MySQL—redo log、undo log以及MVCC 首先回忆一下MySQL事务的四大特性:ACID,即原子性、一致性、隔离性和持久性。其中原子性、一致性、持久性实际上是由InnoDB中的两份日志保证的,一份是redo log日志,一份是undo log日志&#xff…

了解常用测试模型 -- V模型、W模型

目录 V模型 测试流程 特点 优、缺点 w模型/双v模型 测试流程 特点 优、缺点 V模型 测试流程 用户需求:产品经理将用户需求转变为软件需求 需求分析与系统设计:验证需求是否正确,确定编程语言和框架 概要设计:项目结构设…

Java数据结构-优先级队列

文章目录 前言一、优先级队列1.1 概念 二、优先级队列的模拟实现2.1 堆的概念2.2 堆的存储方式2.3 堆的创建2.3.1 堆向下调整2.3.2 堆的创建2.3.3 建堆的时间复杂度 2.4 堆的插入与删除2.4.1 堆的插入2.4.2 堆的删除 2.5 用堆模拟实现优先级队列 三、常用接口介绍3.1 PriorityQ…

鼓楼夜市管理wpf+sqlserver

鼓楼夜市管理系统wpfsqlserver 下载地址:鼓楼夜市管理系统wpfsqlserver 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于C#wpf架构和sql server数据库 功能模块: 登录注册 鼓楼夜市管理系统主界面所有店铺信…

C++类与对象二

目录 一、类的嵌套 二、对象引用私有数据成员 通过公有函数为私有成员赋值 利用指针访问私有数据成员 利用函数访问私有数据成员 利用引用访问私有数据成员 三、成员函数重载 四、this指针 一、类的嵌套 #include <iostream> using namespace std;class CC1 { p…