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

在这里插入图片描述

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

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

相关文章

【回归预测】基于DBO-RF(蜣螂优化算法优化随机森林)的回归预测 多输入单输出【Matlab代码#67】

文章目录 【可更换其他算法,获取资源请见文章第6节:资源获取】1. 随机森林RF算法2. 蜣螂优化算法3. 实验模型4. 部分代码展示5. 仿真结果展示6. 资源获取 【可更换其他算法,获取资源请见文章第6节:资源获取】 1. 随机森林RF算法 …

MM1: Methods, Analysis Insights from Multimodal LLM Pre-training

MM1: Methods, Analysis & Insights from Multimodal LLM Pre-training 相关链接:arxiv 关键字:多模态学习、大型语言模型、预训练、视觉语言连接、混合专家模型 摘要 本文讨论了构建高性能的多模态大型语言模型(MLLMs)。特别…

[SAP ABAP] 异常处理

异常 是在程序执行期间出现的问题 当异常发生时,程序的正常流程被中断,应用程序将会异常终止 例1 执行上述代码出现以下错误 我们可以使用TRY和CATCH关键字的组合捕获异常 执行上述代码出现以下结果 例2 执行上述代码出现以下错误 我们可以使用TRY和CAT…

springboot+poi-tl根据模板导出word(含动态表格和图片),并将导出的文档压缩zip导出

springbootpoi-tl根据模板导出word&#xff08;含动态表格和图片&#xff09; 官网&#xff1a;http://deepoove.com/poi-tl/ 参考网站&#xff1a;https://blog.csdn.net/M625387195/article/details/124855854 pom导入的maven依赖 <dependency><groupId>com.dee…

Soft Robotics 变结构手掌和变刚度手指的仿人软体手的人机交互操作-武科大ESIR课题组师兄成果

一、引言 在当今的机器人技术领域&#xff0c;人类对机器人的需求日益增长&#xff0c;涉及到工业生产、医疗护理、服务业等各个领域。然而&#xff0c;由于任务的多样性和复杂性&#xff0c;单独依靠自主机器人操作往往难以满足实际需求。为了解决这一问题&#xff0c;人机协作…

白话微机:9.解释SoC和Linux

一. 前言&#xff08;回顾世界观&#xff09; 在“微机世界”&#xff0c;普通的城市(单片机)里&#xff0c;人又有一个别的名字叫做“数据”&#xff0c;人有0有1&#xff1b;人们也有住房&#xff0c;这些住房在这个世界叫做“存储器”&#xff1b;地上有路&#xff0c;这些路…

鸿蒙开发实战:【音频组件】

简介 音频组件用于实现音频相关的功能&#xff0c;包括音频播放&#xff0c;录制&#xff0c;音量管理和设备管理。 图 1 音频组件架构图 基本概念 采样 采样是指将连续时域上的模拟信号按照一定的时间间隔采样&#xff0c;获取到离散时域上离散信号的过程。 采样率 采样…

数据仓库的设计开发应用(一)

目录 一、数据仓库设计的特点二、数据仓库系统开发过程三、数据仓库系统的规划 一、数据仓库设计的特点 1、“数据驱动” 的设计 数据仓库是从已有数据出发的设计方法&#xff0c;即从数据源抽取数据&#xff0c;经转换形成面向主题&#xff0c;支持决策的数据集合。 以全面了…

MapReduce的原理分析

1.概述 MapReduce的思想核心是“分而治之,先分再合”&#xff0c;适用于大量复杂任务处理场景(大规模数据处理场景)。 MapReduce分两个阶段: map阶段(分)&#xff1a;如果任何可以拆分并且没有依赖&#xff0c;那么就把复杂的任务拆分成小任务&#xff0c;拆分成小任务之后&a…

【云原生-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-…

QMI8658芯片I2C驱动开发指南

这个芯片纯国产挺好用的&#xff0c;电路很好设计&#xff0c;我这垃圾焊功&#xff0c;纯手焊&#xff0c;&#xff0c;居然能用。 第一部分 硬件连接 画的很简陋&#xff0c;看看就可以了&#xff0c;这里I2C总线需要接10K上拉没有画出来&#xff0c;这个需要注意一下。 …

【XR806开发板试用】基于WEBSOCKET实现人机交互(控制开关灯)以及开发问题记录

一、开发板编译、功能介绍 根据官方文档编译烧录成功后&#xff0c;我们修改下官方例子&#xff0c;进行开发来实现websocket。 整体流程&#xff1a;开发板先自动寻找指定的wifi并且连接&#xff0c;连接成功后&#xff0c;通过websocket来与服务端连接&#xff0c;连接成功后…

idea项目mapper.xml中的SQL语句黄色下划线去除

问题描述 当我们使用idea开发java项目时&#xff0c;经常会与数据库打交道&#xff0c;一般在使用mybatis的时候需要写一大堆的mapper.xml以及SQL语句&#xff0c;每当写完SQL语句的时候总是有黄色下划线&#xff0c;看着很不舒服。 解决方案&#xff1a; 修改idea的配置 Edi…

实验01 ASP.NET网站的建立及运行

【实验目的】 &#xff08;1&#xff09;能熟悉ASP.NET的开发环境Visual Studio Community 2019&#xff08;VSC 2019&#xff09;。 &#xff08;2&#xff09;能通过解决方案管理网站&#xff0c;会在解决方案中创建网站。 &#xff08;3&#xff09;会设置IIS 10中的网站…

Node.js(1)

跨平台的node.js运行环境&#xff0c;使开发者可以搭建服务器端的js应用程序 它可以编写服务器端程序&#xff1b; 编写数据接口&#xff1b;提供网页资源浏览功能 前端工程化&#xff1a;开发集成的所有工具和技术 与浏览器环境的区别 node.js环境中没有DOM和BOM fs模块-读…

Linux下安装多个nodejs并映射Jenkins

背景 需要Jenkins中切换多个Node&#xff0c;比如nodejs16和nodesjs18,所以在宿主机按照好这两个版本&#xff0c;然后再映射到Jenkins容器中 步骤 1.下载地址 https://nodejs.org/dist/ 放到 cd /opt/soft/2.解压 tar -xzvf node-v16.20.0-linux-x64.tar.gz tar -xzvf n…

SSM SpringBoot vue智能手机参数分析平台

SSM SpringBoot vue智能手机参数分析平台 系统功能 首页 图片轮播 新闻资讯 手机信息 手机百科 登录注册 个人中心 后台管理 登录注册 个人中心 手机百科管理 用户管理 手机对比管理 配置管理 新闻资讯管理 手机信息管理 对比信息管理 我的收藏管理 开发环境和技术 开发语言…

Kafka配置SASL_PLAINTEXT权限。常用操作命令,创建用户,topic授权

查看已经创建的topic ./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list 创建topic 创建分区和副本数为1的topic ./bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --topic acltest --partitions 1 --replication-factor 1 创建kafka用户 …

迷宫寻路[天梯赛 -- 栈]

文章目录 题目描述思路AC代码 题目描述 输入样例 8 8 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 4 4 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 -1 -1输出样例 1,1 2,1 3,1 4,1 5,1 5,2 5…

修复ElementUI中el-select与el-option无法通过v-model实现数据双向绑定的问题

1. 问题描述 需求&#xff1a;在使用ElementUI时&#xff0c;通过el-select和el-option标签实现下拉列表功能&#xff0c;当el-option中的选项被选中时&#xff0c;被选中的选项可以正确回显到已选择的列表中。 对于上面的下拉列表&#xff0c;当我们选中“超级管理员”的选项…