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

最近不是在学习plotly嘛,为了方便理解,我们这里取excel绘图中常见的16种图表为例,分两期演示这些基础图表怎么用plotly进行绘制

  • 第一部分:柱状图、条形图、折线图、面积图、饼图与圆环图、散点图、气泡图和极坐标(雷达图)

  • 第二部分:树状图、旭日图、直方图、箱线图、瀑布图、漏斗图、股价图和地图

5337f1361425b2944e6b08ddfce8b3f9.png
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()
075b6d4509ed4c8cf780e0d644f1d6d3.png
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()
040da67ae87af3a6983c682e372a7bab.png
柱状图

堆叠柱状图

# 自带数据集 medals_long(长表数据)
long_df = px.data.medals_long()
long_df.head()
28b604eb0041875b9de8d212cf745eb3.png
medals_long
# 堆叠柱状图 (使用长表数据,这种数据excel无法直接绘制堆叠图)
import plotly.express as pxlong_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()
37ebdc5a57859dacd2e4c9ad48a421d6.png
堆叠柱状图-长表
# 自带数据集 medals_long(宽表数据)
wide_df = px.data.medals_wide()
wide_df.head()
a50b1165fa96b6a073e1da4170551b2c.png
宽表
# 堆叠柱状图 (使用长表数据,这种数据excel可以直接绘制堆叠图)
import plotly.express as pxwide_df = px.data.medals_wide()
fig = px.bar(wide_df, x="nation", y=["gold", "silver", "bronze"], title="堆叠柱状图 Wide-Form Input")
fig.show()
2d03e4305b24ee3681ff29cb958bd0f0.png
堆叠柱状图-宽表

**簇状柱状图 **:

# 簇状柱状图
import plotly.express as pxlong_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()
876b8bc00d300d9d59c33274f36ccfbd.png
簇状柱状图

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

# 类似于excel里柱状图填充色中依据数据点着色
import plotly.express as pxdata = 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()
eaa9ad62676bab1527d9a228cbf09b39.png
数据点着色

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()
187806d834f18f2720bb77baf0e77474.png
条形图

3. 折线图

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

单个折线图:

# 折线图
import plotly.express as pxdf = 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()
13e1ba12edb2064d54241265ba078426.png
单折线图

多折线图

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

分组多折线图

# 分组多折线图
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()
95362c09a314ade7aad7f27eb8e57213.png
分组多折线图

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()
2dfc8f354d9699642c6ef30d8f82c2d7.png
面积图

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()
0c223e316602f21720c2453cb0652f97.png
饼图

字段多条数据自动处理:

# 自带数据集 tips,字段day下是星期,存在多条
df = px.data.tips()
df.head()
c89230aa3fde32d5afdce0058667b78f.png
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()
b9dd4638740ff59c6baa6ea22f5c2f25.png
自动聚合做饼图

设置配色方案:

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

# 设置配色方案
import plotly.express as pxdf = px.data.tips()
fig = px.pie(df, values='tip', names='day', color_discrete_sequence=px.colors.sequential.RdBu, # 设置配色方案)
fig.show()
856583c3f70f1e924ebb41f73d39c997.png
设置配色方案作图

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

# 自定义配色
import plotly.express as pxdf = 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()
cead205da464f94af23a7563c837b3d7.png
自定义每个色块颜色

在饼图上显示数据标签

# 在饼图上显示数据标签
import plotly.express as pxdf = 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()
73b03d8de1cfe7b228613f2c12d63bec.png
在饼图上显示数据标签

圆环图

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

# 圆环图
import plotly.express as pxdf = px.data.tips()
fig = px.pie(df, values='tip', names='day', color_discrete_sequence=px.colors.sequential.RdBu,hole=.3, # 设置空心半径比例)
fig.show()
043c53405b00e8b036e44ac631d5cdb3.png
圆环图

6. 散点图

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

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

# x轴和y轴均是列表的形式
import plotly.express as pxfig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
fig.show()
0d317e0943a086b129f7af46909412de.png
列表数据散点图

给定pd.Dataframe类型数据

# 自带数据集 iris
df = px.data.iris()
df.head()
590a1db4dbed3b1e1c5e408a0b3f091e.png
iris数据集
0a031e93666a0c0378e613c978e05d41.png
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()
04e437f132a16e2b2b82b16a3c3cee55.png
设置数据点颜色额大小

做个三角函数的图:

import plotly.express as px
import numpy as npt = np.linspace(0, 2*np.pi, 100)fig = px.scatter(x=t, y=np.cos(t), labels={'x':'t', 'y':'cos(t)'})
fig.show()
5d779211ea9761a03825e3a5dbf2fda2.png
cos(t)

7. 气泡图

# 气泡图
import plotly.express as pxdf = px.data.gapminder()fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",size="pop",  # 设置气泡大小依据字段popcolor="continent",hover_name="country", log_x=True, size_max=60, #设置最大气泡)
fig.show()
36956c00f935405135461b1b06837f70.png
气泡图

8. 极坐标(雷达图)

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

# 自带数据集 wind
df = px.data.wind()
df.head()
804ac012befe34611bf4f620ea43c107.png
wind
import plotly.express as pxdf = px.data.wind()
fig = px.scatter_polar(df, r="frequency", # 半径theta="direction", # 类型)
fig.show()
25285b6d8252fbdf885a11ff4e7fc0d5.png
极坐标

着色和分组标识

import plotly.express as pxdf = 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()
894b97c2bcbe82bf7e3a361954ba5cdc.png
着色和分组标识

雷达图

# 雷达图
import plotly.express as pxdf = 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()
276696073fe1ccc85de11a00e0717bd9.png
雷达图

扇形区域图

# 扇形图区域
import plotly.express as pxfig = 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()
5162ae837511989596d4f0d446e4f955.png
扇形区域图

da81ca7f3cf236b04a48be0ac97e5271.gif

对比Excel系列图书累积销量达15w册,让你轻松掌握数据分析技能,感兴趣的同学可以直接在各大电商平台搜索书名了解:

d8367f41abd8e1c172c7f6926ffcff8c.png

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

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

相关文章

这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!

点击上方蓝色小字&#xff0c;关注“涛哥聊Python” 重磅干货&#xff0c;第一时间送达 作者 | 旧时晚风拂晓城 编辑 | JackTian来源 | 杰哥的IT之旅&#xff08;ID&#xff1a;Jake_Internet&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;Hc220066&#xff09; 一…

程序员最关心的问题,我都帮你们问AI了

前言 微信关注【小白技术圈】发送【Y99】获取国内免登录免梯子玩法 最近几天互联网刮起了一阵ChatGPT风&#xff0c;起因是OpenAI发布了一个全新的聊天机器人模型—— ChatGPT&#xff0c;可以像人类交谈般回答大部分问题甚至还能直接帮你写代码。 我们先来试试让它帮我们写个代…

SCITIC论坛 | 数字化创意探索——从流浪地球说起

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 随着《流浪地球2》的火热出圈&#xff0c;数字虚拟人、元宇宙、AIGC等AI元素备受关注。去年11月&#xff0c;美国人工智能研究公司Open AI发布聊一款全新聊天机器人模型“ChatGPT”, 推出后迅速火爆全球&#x…

今天15:00 | 从流浪地球说起,一起聊一聊数字创意

点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入&#xff01; 随着《流浪地球2》的火热出圈&#xff0c;数字虚拟人、元宇宙、AIGC等AI元素备受关注。去年11月&#xff0c;美国人工智能研究公司Open AI发布聊一款全新聊天机器人模型“ChatGPT”, 推出后迅速火爆全球&#x…

【诏安扑克牌玩法 —— 宝】庄家(宝官)一定会赢吗?

统计庄家&#xff08;宝官&#xff09;赢得概率 宝的玩法介绍关于洗牌实验步骤实验结果原始数据源代码&#xff08;Python&#xff09;要想不输&#xff0c;惟有不赌&#xff01; 宝的玩法介绍 这是一种简单、不需要技术仅靠运气的扑克牌玩法。 开始前先在牌组中取出大小王&a…

Datawhale:愿竞赛圈少一些人身攻击和热点炒作

作者&#xff1a;Datawhale 关于Kaggle瓜事件&#xff0c;最近得到很多竞赛圈朋友的关注&#xff0c;也导致很多参加竞赛的朋友深受其扰。事实上整个事件是因为kaggle比赛上两个队伍因为提交的sub一样&#xff0c;被取消了成绩&#xff0c;不管原因是什么&#xff0c;有错认错&…

pygame实现王思聪吃热狗小游戏(双人版)

游戏介绍: 一款单人版的思聪吃热狗游戏&#xff0c;你可以自己调节思聪的位置&#xff0c;移动时会消耗能量10&#xff0c;游戏中吃到热狗分数加 1&#xff0c;能量加 20&#xff0c;最后的目标就是称霸世界咯&#xff0c;吃掉所有的热狗即游戏胜利。王思聪能量消耗完毕即游戏…

基于C++实现惊险刺激的Flappy Bird设计

资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85941853 资源下载地址&#xff1a;https://download.csdn.net/download/sheziqiong/85941853 目录 1、 题目描述和题目要求 2 2、 需求分析 2 3、总体设计 5 3.1 功能模块设计 5 3. 状态信息栏&#x…

[COGS 2897] [THUPC 2017] 天天爱射击

COGS传送门 题目描述 小C爱上了一款名字叫做《天天爱射击》的游戏&#xff0c;在这款游戏中可以用子弹将木板打碎。如图所示&#xff0c;这个游戏有一些平行于x轴的木板。现在有一些子弹&#xff0c;按顺序沿着y轴方向向这些木板射去。第 i i i块木板被 S i S_i Si​个子弹击…

【选恐症安利】小熊猫C++原创配色

【选恐症安利】小熊猫C原创配色! 本人是超级强迫症和选择恐惧症&#xff01;经过三天的调色&#xff0c;成就了下面的情景&#xff1a; 哇&#xff0c;绝了&#xff01; 你可以在这里导入配色&#xff1a; 好了&#xff0c;放链接&#xff01; wwt.lanzoum.com/iv4VW0cbkep…

[day2]python网络爬虫实战:爬取美女写真图片(增强版)

l> 我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 1.开发环境2.第三方库3.实现1.分析url格式2.分析图片格式3.保存图片到本地4.输入页数 4.优化1.防止被封2.多线程下载3.便捷获取图片地址 5.效果6.G…

Python写网络爬虫(一)

文章目录 网络爬虫简介爬虫在使用场景中的分类爬虫的矛与盾需要知道的协议常用请求头信息常用响应头信息requests模块如何使用requests&#xff1a;&#xff08;requests模块的编码流程&#xff09;新手实战演练正式入门爬虫get 方法的常用参数&#xff1a;简易网页采集器 首先…

那个顶撞雷军还爱在办公室打乒乓的副总裁——周光平

文章原创来自洞见网&#xff1a;http://www.localonline.com.cn/start/people/712.html&#xff0c;转载请注明出处。 近日&#xff0c;东南大学(原南京工学院)1977级校友周光平、严星夫妇捐资2000万元&#xff0c;在母校设立“平星基金”&#xff0c;用于支持信息科学与工程学…

雷军—我十年的程序员生涯

内容转自&#xff1a;http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html 最近&#xff0c;和UCWEB同事讨论&#xff0c;怎么才能把我们的UCWEB做到极致。我说&#xff0c;“手机上的平台非常多&#xff0c;如果想做好&#xff0c;需要足够多、足够优秀的程序员。优秀的程序…

雷军谈人生三段低谷:站店卖货、泡吧泡论坛、错失互联网第一波浪潮!

自2020年小米十周年雷军进行了人生首次公开演讲以来&#xff0c;他似乎想要养成一种习惯&#xff0c;每年都举办一次年度演讲。 继2020年“相信自己&#xff0c;一往无前”和2021年“我的梦想&#xff0c;我的选择”两场年度演讲后&#xff0c;这不&#xff0c;在小米迎来12周…

中国第一程序员求伯君,WPS之父,雷军也佩服的人

中国第一程序员求伯君&#xff0c;WPS之父&#xff0c;最强码农的传奇经历 转载知乎冷冷读书 https://www.zhihu.com/people/leng-leng-80-6 2018年底&#xff0c;金山举办创业三十年庆典&#xff0c;三位创始人&#xff0c;求伯君、雷军和张旋龙相继到场。庆生中&#xff0c;雷…

用互联网思想武装自己---雷军

两年前的4月6日&#xff0c;我们几个人&#xff0c;在北四环的银谷大厦静悄悄的创办了小米公司&#xff0c;一起喝了碗小米粥&#xff0c;就开始艰难的创业之旅。仅仅两年时间&#xff0c;小米在百度手机品牌排行榜排在前五名&#xff0c;也在淘宝销售排行榜名列前茅&#xff0…

身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生&#xff0c;值得我们每一个人深思。 在普通人眼里&#xff0c;他寂寂无名&#xff0c;只有年岁稍长的文化人&#xff0c;才听说过他传奇般的存在。 在IT人眼里&#xff0c;他是块活化石&#xff0c;中国第一的大旗除了他&#xff0c;没人敢抗&#xff01; 他是求…

雷军主导小米管理层变革:创业派隐退 职业经理人上位

雷递网 雷建平 12月23日 岁末之际&#xff0c;在京东零售大幅调整后&#xff0c;小米也进行了一轮大调整。 小米集团内部邮件所示&#xff0c;小米总裁王翔将在月底卸任集团总裁职务退休&#xff0c;同时&#xff0c;继续作为高级顾问为公司服务。 小米集团总裁一职将由2019年加…

雷军与周鸿祎:两个九头鸟的战争

一场 智能手机 的口水大战将雷军和周鸿祎推到风口浪尖。有一句俗话叫“天上九头鸟&#xff0c;地上湖北佬”&#xff0c;来形容湖北人的精明、睿智。 小米科技董事长兼CEO雷军、奇虎360董事长周鸿祎同是湖北人。雷军1969年12月16日于湖北仙桃&#xff0c;一个教师家庭&#…