最近不是在学习plotly嘛,为了方便理解,我们这里取excel绘图中常见的16种图表为例,分两期演示这些基础图表怎么用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 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()

堆叠柱状图-长表
# 自带数据集 medals_long(宽表数据)
wide_df = px.data.medals_wide()
wide_df.head()

宽表
# 堆叠柱状图 (使用长表数据,这种数据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()

堆叠柱状图-宽表

**簇状柱状图 **:

# 簇状柱状图
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()

簇状柱状图

类似于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()

数据点着色

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

单折线图

多折线图

# 多折线图
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 pxdf = px.data.tips()
fig = px.pie(df, values='tip', names='day', color_discrete_sequence=px.colors.sequential.RdBu, # 设置配色方案)
fig.show()

设置配色方案作图

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

# 自定义配色
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()

自定义每个色块颜色

在饼图上显示数据标签

# 在饼图上显示数据标签
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()

在饼图上显示数据标签

圆环图

圆环图是指饼图中间一定半径的圆部分为空白,设置参数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()

圆环图

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

列表数据散点图

给定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 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()

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

气泡图

8. 极坐标(雷达图)

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

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

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

极坐标

着色和分组标识

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

着色和分组标识

雷达图

# 雷达图
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()

雷达图

扇形区域图

# 扇形图区域
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()

扇形区域图

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

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

  1. 手把手教你用plotly绘制excel中常见的16种图表(下)

    大家好,我是才哥. 上一期咱们介绍<手把手教你用plotly绘制excel中常见的16种图表(上)>演示了8种常见图表,今天我们继续演示另外8种常见图表的绘制. 文章目录 1. 树状图 2 ...

  2. 手把手教你用plotly绘制excel中常见的16种图表(上)

    大家好,我是才哥. 最近不是在学习plotly嘛,为了方便理解,我们这里取excel绘图中常见的16种图表为例,分两期演示这些基础图表怎么用plotly进行绘制! 第一部分:柱状图.条形图.折线图.面 ...

  3. 手把手教你用Python实现Excel中的Vlookup功能

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 像树一样成长. 一.前言 大家好, ...

  4. 用python画皇冠_手把手教你用 Python 绘制酷炫的桑基图!

    原标题:手把手教你用 Python 绘制酷炫的桑基图! 作者 | 周志鹏 责编 | 郭 芮 最近,不止一次收到小伙伴的截图追问: "这个图叫什么???" "这个图真好看! ...

  5. graphpad画生存曲线怎么样去掉删失点_手把手教你用graphpadprism绘制生存曲线

    手把手教你用 graphpadprism 绘制生存曲线 疾病预后研究中,生存曲线是必不可少的素材之一,其 重要性不言而喻.那么,当获取到生存数据后应该如何绘制 一幅对得起读者和编辑的生存曲线呢? 在目 ...

  6. excel设置行高_手把手教你用wps表格excel制作田字格书法练习字帖

    自己给孩子量身定制一个吧,跟着香哥走,手把手教你用wps表格excel制作田字格书法练习字帖,咱用的软件是wps表格. 第一步:设置列宽和行高,都为36磅. 第二步:选中四个方格,右键单击,在弹出的菜 ...

  7. Nginx变身爆火神器,手把手教你在永洪BI中应用

    Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服 ...

  8. 教你用python在excel中“画画”

    有意思系列----教你用python在excel中画画 一.废话不多说,先看看成品 二.实现思路 1.图片相关知识说明 位图: 位图由一个个像素点组成,每个像素点都有自己的颜色.而我们可以操纵这些像素 ...

  9. 手把手教你开发微信小程序中的插件

    继上次 手把手教你实现微信小程序中的自定义组件 已经有一段时间了(不了解的小伙伴建议去看看,因为插件很多内容跟组件相似),今年3月13日,小程序新增了 小程序**「插件」 功能,以及开发者工具新增 「 ...

最新文章

  1. sql-server基础三(select 、update、insert,delete)
  2. JAVA中报错AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@f70ee1)
  3. tcp拥塞控制_网络TCP的拥塞控制算法简介
  4. IntelliJ IDEA for Mac自定义动态代码模板快捷键(Live Templates Shortcut)
  5. mysql显示百分比例_显示值mysql的百分比
  6. 5 个鲜为人知 GNU 调试器(GDB)技巧 | Linux 中国
  7. mvc 前段定义变量_3分钟短文 | Laravel blade模板里优雅地定义PHP变量
  8. 成功解决internal/modules/cjs/loader.js:596 throw err; ^ Error: Cannot find module 'express'
  9. 你是如何看待 ‘裸辞’ 这件事的?
  10. 计算机应用基础 (2013),计算机应用基础
  11. videojs-flash.min.js 报错 this.el_.vjs_getProperty is not a function
  12. 过完双11,我去闲鱼当二道贩子
  13. 选择勤哲Excel服务器做企业管理系统ERP的经验之谈
  14. C/C++:无法打开.obj文件
  15. Nginx+Tomcat 搭建负载均衡、动静分离(tomcat多实例)
  16. 质数与合数系列——素数判断
  17. lex生成lex.yy.c代码流程解析
  18. 交换内存SWAP使用率90%
  19. (第二场网络赛J题)Leaking Roof(bfs)
  20. LG30刷小米系统_闲鱼300块入手小米平板1,性能居然秒杀1099的小米平板4

热门文章

  1. iOS通过http post上传图片, 文件等
  2. php加入购物车怎样实现_PHP实现添加购物车功能
  3. 橙色简约大气岗位竞聘个人简历PPT模板
  4. 苹果怎么办到?AI技术让HomePod语音助理Siri听到
  5. discuz整合ckplayer增加dz游客试看试播功能vip不限m3u8格式
  6. Win10下应用程序默认管理员权限运行
  7. 江苏科技报:《电子名片悄然流行,纸质名片会被淘汰吗》
  8. 2022年竞赛打榜,神经网络还是干不过树模型??
  9. 温馨提示--Python小屋刷题神器明天暂停使用1天
  10. 【Pyecharts50例】添加自定义地图/geojson使用/区县地图