手把手教你用plotly绘制excel中常见的8种图表

目录:

  • 0. 准备工作

  • 1. 柱状图

  • 2. 条形图

  • 3. 折线图

  • 4. 面积图

  • 5. 饼图与圆环图

  • 6. 散点图

  • 7. 气泡图

  • 8. 极坐标(雷达图)

0. 准备工作

我这边是在jupyterlab中演示的plotly图表,如果只安装plotly是无法正常显示图表的(会显示为空白),我们需要进行以下准备(以下命令均在cmd下操作即可):

# 安装plotly库及plotly-orca库
pip install plotly
pip install plotly plotly-orca

# Basic JupyterLab renderer support
jupyter labextension install jupyterlab-plotly

# OPTIONAL: Jupyter widgets extension for FigureWidget support
jupyter labextension install @jupyter-widgets/jupyterlab-manager plotlywidget

参考:https://github.com/plotly/plotly.py

plotly有两种绘图方式,其一是原始graph_objects,其二是Plotly Express。我们这里用到的是后者,至于其中的区别,大概就是后者是高级版本,封装了很多后者的复杂操作,可以直接用pandas.Dataframe类型,是现在主推的。

1. 柱状图

我们知道,在excel插入图表的时候,柱状图一般可选堆叠柱状图簇状柱状图

柱状图:

# 自带数据集 gapminder
data = px.data.gapminder()
data.head()

图片

gapminder

# 柱状图
import plotly.express as px
data_canada = px.data.gapminder().query("country == 'Canada'")
fig = px.bar(
    data_canada, # 数据集
    x='year', # x轴
    y='pop', # y轴
)
fig.show()

图片

柱状图

堆叠柱状图

# 自带数据集 medals_long(长表数据)
long_df = px.data.medals_long()
long_df.head()

图片

medals_long

# 堆叠柱状图 (使用长表数据,这种数据excel无法直接绘制堆叠图)
import plotly.express as px

long_df = px.data.medals_long()
fig = px.bar(
    long_df,  # 数据集
    x="nation",  # x轴
    y="count",  # y轴
    color="medal",  # 图例颜色(这种情况下需要设定该参数根据medal类型才区分,否则同色)
    title="堆叠柱状图 Long-Form Input", # 图表标题
)
fig.show()

图片

堆叠柱状图-长表

# 自带数据集 medals_long(宽表数据)
wide_df = px.data.medals_wide()
wide_df.head()

图片

宽表

# 堆叠柱状图 (使用长表数据,这种数据excel可以直接绘制堆叠图)
import plotly.express as px

wide_df = px.data.medals_wide()
fig = px.bar(wide_df, x="nation", 
             y=["gold", "silver", "bronze"], 
             title="堆叠柱状图 Wide-Form Input")
fig.show()

图片

堆叠柱状图-宽表

**簇状柱状图 **:

# 簇状柱状图
import plotly.express as px

long_df = px.data.medals_long()
fig = px.bar(
    long_df,  
    x="nation",  
    y="count",  
    color="medal",  
    title="簇状柱状图 Long-Form Input", 
    barmode='group', # barmode 设置为 group则为簇状柱形图,可选 stack(叠加)、group(并列)、overlay(覆盖)、relative(相对)
)
fig.show() 

图片

簇状柱状图

类似于excel里柱状图填充色中依据数据点着色

# 类似于excel里柱状图填充色中依据数据点着色
import plotly.express as px

data = px.data.gapminder()
data_canada = data[data.country == 'Canada']
fig = px.bar(data_canada, x='year', y='pop',
             hover_data=['lifeExp', 'gdpPercap'], 
             color='lifeExp', # 指定柱状图颜色根据 lifeExp字段数值大小自动着色
             labels={'pop':'population of Canada'}, 
             height=400, # 图表高度
            )
fig.show()

图片

数据点着色

2. 条形图

条形图其实就是柱状图转个90度,横着显示呗。所以,本质上是一样的,唯一的区别:在 Bar 函数中设置orientation='h',其余参数与柱状图相同。

# 在plotly绘图中,条形图与柱状图唯一的区别:在 Bar 函数中设置orientation='h',其余参数与柱状图相同
import plotly.express as px
data = px.data.gapminder()

data_canada = data[data.country == 'Canada']
fig = px.bar(data_canada, y='year', x='pop',
             hover_data=['lifeExp', 'gdpPercap'], 
             color='lifeExp', # 指定柱状图颜色根据 lifeExp字段数值大小自动着色
             labels={'pop':'population of Canada'}, 
             height=600, # 图表高度
             width=800, # 图表宽度
             orientation='h' # 条形图设置参数
            )
fig.show()

图片

条形图

3. 折线图

折线图大致可以是画一个折线图或多条折线图。

单个折线图:

# 折线图
import plotly.express as px

df = px.data.gapminder().query("country=='Canada'")
fig = px.line(df, x="year", y="lifeExp", title='Life expectancy in Canada',
              text='lifeExp', # 数据点显示值
              line_shape='linear', # 共有6种插值方式:'linear'、'spline'、'hv'、'vh'、'hvh'和'vhv。
             )
fig.update_traces(
    texttemplate='%{text:.2f}', # 数据点显示值的格式
    textposition='top center', # 数据点显示的位置:'top left', 'top center', 'top right', 'middle left','middle center', 'middle right', 'bottom left', 'bottom center', 'bottom right'
) 
fig.show()

图片

单折线图

多折线图

# 多折线图
import plotly.express as px

# 比如绘制大洋洲(有澳大利亚和新西兰)
df = px.data.gapminder().query("continent=='Oceania'")
fig = px.line(df, x="year", y="lifeExp", 
              color='country', # 按照国家区分
             )
fig.show()

图片

多折线图

分组多折线图

# 分组多折线图
import plotly.express as px

# 绘制各大洲每个国家人均寿命随着时间变化曲线
df = px.data.gapminder().query("continent != 'Asia'") # remove Asia for visibility
fig = px.line(df, x="year", y="lifeExp", 
              color="continent",
              line_group="country", 
              hover_name="country")
fig.show()

图片

分组多折线图

4. 面积图

import plotly.express as px

# 比如绘制大洋洲(有澳大利亚和新西兰)
df = px.data.gapminder().query("continent=='Oceania'")
fig = px.area(df, x="year", y="pop", 
              color='country', # 按照国家区分
             )
fig.show()

图片

面积图

5. 饼图与圆环图

我们在用excel绘制饼图的时候,可以选择既定配色方案,还可以自定义每个色块的颜色。用plotly绘制的时候,这些自定义操作也是支持的。

# 饼图
import plotly.express as px

# 筛选2007年欧洲数据
df = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
# 将小于200万的国家标记为其他
df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' 
# 绘制饼图
fig = px.pie(df, values='pop', names='country', title='Population of European continent')
fig.show()

图片

饼图

字段多条数据自动处理:

# 自带数据集 tips,字段day下是星期,存在多条
df = px.data.tips()
df.head()

图片

tips数据预览

我们可以看到,在tips数据集中,day字段是星期,包含很多同星期的数据。在进行饼图绘制的时候,以day字段做分类,可以自动实际聚合求和操作

# 如果 分类 标签下有很多数据,则会自动进行分组求和
import plotly.express as px

# This dataframe has 244 lines, but 4 distinct values for `day`
df = px.data.tips()
fig = px.pie(df, values='tip', names='day')
fig.show()

图片

自动聚合做饼图

设置配色方案:

关于配色方案的更多选择,大家可以参考《我又用Python爬取了4000+股票数据,并用plotly绘制了树状热力图(treemap)》里介绍的内容。

# 设置配色方案
import plotly.express as px

df = px.data.tips()
fig = px.pie(df, values='tip', names='day', 
             color_discrete_sequence=px.colors.sequential.RdBu, # 设置配色方案
            )
fig.show()

图片

设置配色方案作图

我们也可以自定义每个色块颜色

# 自定义配色
import plotly.express as px

df = px.data.tips()
fig = px.pie(df, values='tip', names='day', color='day',
             color_discrete_map={'Thur':'lightcyan',
                                 'Fri':'cyan',
                                 'Sat':'royalblue',
                                 'Sun':'darkblue'})
fig.show()

图片

自定义每个色块颜色

在饼图上显示数据标签

# 在饼图上显示数据标签
import plotly.express as px

df = px.data.gapminder().query("year == 2007").query("continent == 'Asia'")
fig = px.pie(df, values='pop', names='country',
             title='Population of American continent',
             hover_data=['lifeExp'], 
             labels={'lifeExp':'life expectancy'}
            )
fig.update_traces(textposition='inside', 
                  textinfo='percent+label' # 数据标签显示的内容
                 )
fig.show()

图片

在饼图上显示数据标签

圆环图

圆环图是指饼图中间一定半径的圆部分为空白,设置参数hole=int即可(0-1)。

# 圆环图
import plotly.express as px

df = px.data.tips()
fig = px.pie(df, values='tip', names='day', 
             color_discrete_sequence=px.colors.sequential.RdBu,
             hole=.3, # 设置空心半径比例
            )
fig.show()

图片

圆环图

6. 散点图

散点图是x和y均为数字列表情况下的坐标点图。

x轴和y轴均是列表的形式

# x轴和y轴均是列表的形式
import plotly.express as px

fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()

图片

列表数据散点图

给定pd.Dataframe类型数据

# 自带数据集 iris
df = px.data.iris()
df.head()

图片

iris数据集

图片

pd.Dataframe类型数据散点图

# 设置数据点颜色和大小
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", 
                 color="species", # 根据species字段区分颜色
                 size='petal_length', # 根据sepal_length设置大小
                 hover_data=['petal_width'],
                )
fig.show()

图片

设置数据点颜色额大小

做个三角函数的图:

import plotly.express as px
import numpy as np

t = np.linspace(0, 2*np.pi, 100)

fig = px.scatter(x=t, y=np.cos(t), labels={'x':'t', 'y':'cos(t)'})
fig.show()

图片

cos(t)

7. 气泡图

# 气泡图
import plotly.express as px

df = px.data.gapminder()

fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",
                 size="pop",  # 设置气泡大小依据字段pop
                 color="continent",
                 hover_name="country", 
                 log_x=True, 
                 size_max=60, #设置最大气泡
                )
fig.show()

图片

气泡图

8. 极坐标(雷达图)

极坐标下,可以用点或线进行构图,绘制点则用px.scatter_polar,绘制线则用px.line_polar

# 自带数据集 wind
df = px.data.wind()
df.head()

图片

wind

import plotly.express as px

df = px.data.wind()
fig = px.scatter_polar(df, 
                       r="frequency", # 半径
                       theta="direction", # 类型
                      )
fig.show()

图片

极坐标

着色和分组标识

import plotly.express as px

df = px.data.wind()
fig = px.scatter_polar(df, r="frequency", theta="direction",
                       color="strength",  # 颜色根据strength着色
                       symbol="strength",  # 符号根据strength区分
                       size="frequency", # 大小根据 frequency 区分
                       color_discrete_sequence=px.colors.sequential.Plasma_r, # 设置配色方案
                      )
fig.show()

图片

着色和分组标识

雷达图

# 雷达图
import plotly.express as px

df = px.data.wind()
fig = px.line_polar(df, r="frequency", 
                    theta="direction", 
                    color="strength", 
                    line_close=True, # 线条是否闭环
                    color_discrete_sequence=px.colors.sequential.Plasma_r,
                    template="plotly_dark", # 主题模板 
                   )
fig.show()

图片

雷达图

扇形区域图

# 扇形图区域
import plotly.express as px

fig = px.scatter_polar(r=range(0,90,10), theta=range(0,90,10),
                       range_theta=[0,90], # 设定区域
                       start_angle=0, 
                       direction="counterclockwise", # 方位:'counterclockwise' 逆时针 ,'clockwise'顺时针 
                      )
fig.show()

图片

扇形区域图

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

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

相关文章

Mac怎么录屏?简单易懂,关键技巧分享!

随着时代的变迁&#xff0c;人们对mac电脑的使用需求也越来越多样化。其中&#xff0c;屏幕录制成为了很多用户的常用需求&#xff0c;比如录制教程、游戏视频、会议记录等。可是很多用户不知道mac怎么录屏。本文将为你详细介绍两种mac录屏的方法&#xff0c;让大家轻松学会如何…

Internet Download Manager 6.42.3 (IDM) 中文破解免激活绿色版

Internet Download Manager 6.42.3中文破解版&#xff0c;全球最佳下载利器。Internet Download Manager (简称IDM) 是一款Windows 平台功能强大的多线程下载工具&#xff0c;国外非常受欢迎。支持断点续传&#xff0c;支持嗅探视频音频&#xff0c;接管所有浏览器&#xff0c;…

【并发编程】AQS——详细解释公平锁,非公平锁,独占锁,什么是可重入以及condition

目录 1、公平 2.非公平 3.独占锁 4.可重入 5.condition 1、公平 第一步&#xff1a;获取状态的 state 的值。如果 state0 即代表锁没有被其它线程占用&#xff0c;执行第二步。如果 state!0 则代表锁正在被其它线程占用&#xff0c;执行第三步。 第二步&#xff1a;判断队列…

ICSpector:一款功能强大的微软开源工业PLC安全取证框架

关于ICSpector ICSpector是一款功能强大的开源工业PLC安全取证框架&#xff0c;该工具由微软的研究人员负责开发和维护&#xff0c;可以帮助广大研究人员轻松分析工业PLC元数据和项目文件。 ICSpector提供了方便的方式来扫描PLC并识别ICS环境中的可疑痕迹&#xff0c;可以用于…

Spring与Web环境集成

1. Spring与Web环境集成 1.1 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的&#xff0c;但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) &#xff0c;这…

RX4901CE (RTC模块)

RX4901CE是一个集成了32.768 kHz数字温度补偿晶体振荡器(DTCXO)的RTC模块。高稳定性&#xff0c;低电流消耗&#xff0c;时间戳功能&#xff0c;当外部或内部事件发生时&#xff0c;可以记录多达32个日期和时间&#xff0c;以及基本的RTC功能&#xff0c;如时间和日历&#xff…

江科大STM32 中

目录 6、TIM&#xff08;Timer&#xff09;定时器基本定时器通用定时器高级定时器示例程序&#xff08;定时器定时中断&定时器外部时钟&#xff09;TIM输出比较示例程序&#xff08;PWM驱动LED呼吸灯&PWM驱动舵机&PWM驱动直流电机&#xff09;TIM输入捕获示例程序&…

微信小程序登录获取手机号教程(超详细)

1. 背景介绍&#xff1a; 在我们开发微信小程序时&#xff0c;登录时&#xff0c;需要获取用户手机号作为唯一标识&#xff0c;下面我介绍一下获取手机号的教程。 本篇文章介绍后端获取方法&#xff1a; 前端工作 后端工作 前端 新建Page页面&#xff0c;在xxx.wxml中加入…

Linux的 .bashrc 有什么作用?

一、.bashrc 是什么? 有什么用&#xff1f; .bashrc是一个存储在你的home目录下的隐藏文件&#xff0c;它用来配置和自定义你的终端环境和行为。 每次你启动一个新的终端时&#xff0c;.bashrc文件就会被执行&#xff0c;加载你设置的环境变量&#xff0c;别名&#xff0c;函数…

Linux下的gcc与g++

文章目录 一.Linux gcc与g1.gcc如何生成可执行程序&#xff08;g同&#xff09;2.函数库 二.Linux项目自动化构建工具-make/makefile 一.Linux gcc与g 1.gcc如何生成可执行程序&#xff08;g同&#xff09; 预处理&#xff08;宏定义替换,展开头文件代码,条件编译,去注释&…

京东云开发者DDD妙文欣赏(3-4)什么时候厨师是Actor

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 京东云开发者DDD妙文欣赏&#xff08;1-2&#xff09;报菜名和化繁为简的创新>> 图8 《餐厅》中的“用例图” &#xff08;01&#xff09; 原文 用例图 赏析 揉一揉眼睛仔细…

目标检测 - RCNN系列模型

文章目录 1. RCNN2. Fast-RCNN3. Faster-RCNN 1. RCNN 论文&#xff1a;Rich feature hierarchies for accurate object detection and semantic segmentation 地址&#xff1a;https://arxiv.org/abs/1311.2524 分为两个阶段&#xff1a; 目标候选框Object ProposalsProposal…

04 SB实战 -微头条之头条模块(登录验证拦截器+发布文章+修改文章)

1.登陆验证 为什么还要做登陆验证? 尽管先前我们已经进行过登录, 但是要知道token是有有效期的, 而用户登陆后有可能长时间停留在页面不退出, 甚至这个停留的时间超出token有效期, 因此,尽管用户已经登录, 但是, 在需要登录才能进行的操作(进入发布页前、发布新闻前、进入修改…

MongoDB单机部署

Windows系统安装启动 下载安装包 附件中已准备好win32位、win64位安装包 MongoDB 提供了可用于 32 位和 64 位系统的预编译二进制包&#xff0c;你可以从MongoDB官网下载安装&#xff0c;MongoDB 预编译二进制包下载地址&#xff1a;https://www.mongodb.com/download-cente…

MATLAB curve fitting toolbox没有怎么办?

版本&#xff1a;MATLAB R2023b 如果在安装MATLAB时仅仅选择了安装MATLAB&#xff0c;而并未选择其他选项&#xff0c;则在进入MATLAB后会发现顶部的APP栏中无法找到曲线拟合工具箱。 本人跟随MATLAB中的教程进行下载时&#xff0c;出现了如下报错&#xff1a; 最终解决方案&a…

【机器学习300问】19、深度学习和机器学习什么关系?

之前的文章都聚焦在传统的机器学习上&#xff0c;作为入门&#xff0c;学了许多机器学习的基础。往后的文章我会穿插着机器学习和深度学习的内容进行&#xff0c;所有有必要在这里先说下两者的关系。 一、从范围上讲 深度学习和机器学习都是人工智能的一个子领域&#xff0c;它…

自然语言NLP学习

2-7 门控循环单元&#xff08;GRU&#xff09;_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中&#xff0c;标量&#xff08;Scalar&#xff09;是一个只有大小、没有方向的量。它只用一个数值就可以完全…

Elasticsearch内核解析 - 数据模型篇

Elasticsearch内核解析 - 数据模型篇 - 知乎 Elasticsearch是一个实时的分布式搜索和分析引擎&#xff0c;它可以帮助我们用很快的速度去处理大规模数据&#xff0c;可以用于全文检索、结构化检索、推荐、分析以及统计聚合等多种场景。 Elasticsearch是一个建立在全文搜索引擎…

对齐大型语言模型与人类偏好:通过表示工程实现

1、写作动机&#xff1a; 强化学习表现出相当复杂度、对超参数的敏感性、在训练过程中的不稳定性&#xff0c;并需要在奖励模型和价值网络中进行额外的训练&#xff0c;导致了较大的计算成本。为了解决RL方法带来的上述挑战&#xff0c;提出了几种计算上轻量级的替代方案&…

虹科分享丨汽车技术的未来:Netropy如何测试和确保汽车以太网的性能

来源&#xff1a;艾特保IT 虹科分享丨汽车技术的未来&#xff1a;Netropy如何测试和确保汽车以太网的性能 原文链接&#xff1a;https://mp.weixin.qq.com/s/G8wihrzqpJJOx5i0o63fkA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; #汽车以太网 #车载网络 #Netropy …