【四 (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.kler.cn/a/273987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

layuiAdmin-通用型后台模板框架【广泛用于各类管理平台】

1. 主页 1.1 控制台 2. 组件 3. 页面 3.1 个人主页 3.2 通讯录 3.3 客户列表 3.4 商品列表 3.5 留言板 3.6 搜索结果 3.7 注册 3.8 登入 3.9 忘记密码 4. 应用 4.1 内容系统 4.1.1 文章列表 4.1.2 分类管理 4.1.3 评论管理 4.2 社区系统 4.2.1 帖子列表 4.2.2 回…

html5播放flv视频

参考:flv-h265 - npmHTML5 FLV Player. Latest version: 1.7.0, last published: 6 months ago. Start using flv-h265 in your project by running npm i flv-h265. There are no other projects in the npm registry using flv-h265.https://www.npmjs.com/packag…

网页429:请求过多

网页429:请求过多 当您的计算机或设备向网站发送太多请求时,尤其是在尝试登录或访问网站的高安全性部分时,可能会收到这个错误。这通常是因为服务器设置了速率限制器,以防止恶意攻击或过度使用。 尝试以下方法 等待一段时间后…

ET框架新起一个服务及实现服务之间的消息通讯

ET框架是熊猫大大写的双端框架,游戏客户端和服务端都是用C#语言来编写 新起一个服务名比如叫做Activity 1.配置文件StartSceneConfig 2. SceneFactory switch (scene.SceneType) {case SceneType.Activity:break; } 定义SceneType枚举类型 public enum SceneTyp…

java毕业设计 | springboot+vue游戏交流网站(附源码)

1, 概述 本次的毕业设计主要就是在基于Java语言平台下设计并开发一个游戏网站系统软件。运用当前Google提供的Java来实现对游戏信息和游戏道具查询。当然使用的数据库是Mysql。尽管没有面向对象的数据库的作用强大,但是在Java开发上还是比较的灵活和方便…

中国传统游戏-幻方-c/c++实现

幻方(Magic Square)是一种将数字安排在正方形格子中,使每行、列和对角线上的数字和都相等的方法。 幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形,使在同一行、同…

html--蝴蝶

<!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>蝴蝶飞舞</title> <link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.cs…

生成微信小程序二维码

首页 -> 统计 可以通过上面二个地方配置&#xff0c;生成小程序的二维码&#xff0c;并且在推广分析里&#xff0c;有详细的分析数据&#xff0c;

由浅到深认识C语言(6):变量的存储类型

该文章Github地址&#xff1a;https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.csdn…

微信公众号 H5本地调试配置 hosts + nginx + openssl

微信公众号授权会跳转到控制台配置的域名下 无法本地调试 这里通过修改hosts nginx代理 ssl安全证书的操作骗过微信开发者工具 hosts hosts文件添加如下内容 刷新 DNS 解析缓存 ipconfig/flushdns nginx 配置反向代理 server {listen 80;server_name work.test.test.c…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Path)

路径绘制组件&#xff0c;根据绘制路径生成封闭的自定义形状。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Path(value?: { width?: number | string; height?: number |…

AI将如何影响我们的生活?

1. AI 会如何影响你的生活 通用聊天场景&#xff1a;也即 ChatGPT 本身&#xff0c;或者用 gpt-3.5 的 api 实现的各类网站或小程序。他们没有明确的问题场景&#xff0c;但反而可以解决非常多的问题&#xff0c;比如搜索一些常见问题的答案、编个笑话等&#xff0c;可以当个搜…

快速高效地数据分析处理:QtiPlot for Mac中文直装版 兼容M

QtiPlot 是一个用于数据分析和可视化的跨平台科学应用程序。由于其多语言支持&#xff0c;QtiPlot 被积极用于世界各地学术机构的教学。许多研究科学家信任 QtiPlot 来分析他们的数据并发布他们的工作结果。来自各个科学领域和行业的数千名注册用户已经选择了 QtiPlot 来帮助他…

【Unity】CatlikeCoding SRP

Unity 自定义渲染管线 提示&#xff1a;基于CatlikeCoding SRP系列教程学习 学习链接&#xff1a;SRP 个人测试: Demo 相关记录以后有时间再更&#xff1a;

PHP反序列化--pop链

目录 一、了解pop链 1、pop链&#xff1a; 2、pop链触发规则&#xff1a; &#xff08;1&#xff09;通过普通函数触发&#xff1a; &#xff08;2&#xff09;通过魔术方法触发&#xff1a; 3、pop链魔术方法例题&#xff1a; 一、了解pop链 1、pop链&#xff1a; pop链…

USART串口

USART串口 USART串口 USART串口一、串口的介绍二、串口通信连线三、串口通信电平标准四、串口通信帧五、串口时序 一、串口的介绍 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单…

二、yocto 集成ros2(基于raspberrypi 4B)

yocto 集成ros2 yocto 集成ros21. 下载ros layer2. 编译集成ros3. 功能验证 yocto 集成ros2 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第二篇文章。 一、yocto 编译raspberrypi 4B并启动 本节我们将ros2机器人操作系统移植到我们的yocto系统里面。 1. 下载ros laye…

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体 最近看到有一款Wubuntu的文章&#xff0c;对于习惯使用windows操作系统&#xff0c;又不熟悉ubuntu系统的程序员小白来说&#xff0c;可以说是福音了。目前的Wubuntu兼容性可能还有一点问题&#xff0c;如果再迭代几次的…

KKVIEW远程: TODESK退出了还能远程吗

Todesk退出了还能远程吗 当我们谈论Todesk或其他远程桌面软件时&#xff0c;一个经常被提及的问题是&#xff1a;当我退出Todesk后&#xff0c;是否仍然可以远程访问我的计算机&#xff1f;为了回答这个问题&#xff0c;我们首先需要了解Todesk的工作原理和远程访问的基本条件…

【C++】手撕AVL树

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能直接手撕AVL树。 > 毒鸡汤&#xff1a;放弃自…
最新文章