ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-05-08

2021-05-08 15:00:16  阅读:294  来源: 互联网

标签:name 05 color 08 show fig go px 2021


高级可视化神器Plotly快速入门

数据可视化已经逐渐发展和深入到我们生活的各个方面,往往遇到数据分析类的工作,借助可视化的方式来呈现我们的数据和结论,能够帮助我们更好地理解数据本身的含义和背后隐藏的规律。

数据通常是以图形或者图表的形式进行展示,例如Excel表格、柱状图、折线图、饼图、旭日图等。

现在出现了很多可视化的工具能够实现数据图表的可视化展示,比如Tableau、Power BI等;和python相关的第三方可视化库也数不胜数,比如很传统和基础的matplotlib、pyecharts、Seaborn,还比如D3、Highcharts等。它们有着自己或多或少的使用缺陷:

  • 绘制出来的图形是静态的:无法实现动态可视化
  • 部分软件需要付费才能使用;否则只能使用部分基础功能
  • 有些可视化库涉及到很多前端JavaScript、HTML的知识,上手比较困难
  • 配置麻烦:简单的图形也需要大量的代码进行配置

Plotly简介

Plotly是一款用来做数据分析和可视化的在线平台,功能真的是非常强大,它主要有以下特点:

  1. 图形多样化:在线绘制多种图形,比如柱状图、饼图、直方图、饼图、气泡图、桑基图、股票图、旭日图、联合分布图、地图等
  2. 在线可编辑:Plotly中有在线编辑的平台,可以将生成的图形保存到该平台,并进行分享
  3. 开源免费:Plotly的所有资源都是开源免费的,用户可直接使用,还可以直接和R、python、MATLAB等软件或者语言无缝对接
  4. 图形动态化:Plotly生成的图形全部是动态化;Plotly的绘图最好在Jupyter notebook中进行,能够很好地显示动态效果
  5. 颜色绚丽:在使用Plotly绘制图形的时候,我们可以进行图形颜色的设置,Plotly提供了丰富的颜色面板供选择
  6. 代码量少:Plotly绘图,尤其是Plotly的高级封装Plotly_Express,代码量非常少;一行代码就能实现多种功能且精美的图形
  7. 内置丰富数据集:在Plotly中内置7个不同类型的数据集,方便读者直接使用内置数据进行学习、使用
  8. 文档健全:Plotly官方提供了丰富的文档资料和案例可免费学习,能够快速的上手

附录:在官网中展示了Plotly能够绘制的部分图形:https://plotly.com/python/

安装和使用

可视化库Plotly及子库的安装非常简单,只需要通过两条命令:

pip install plotly
pip install plotly_express  # 安装

使用之前先导入:

# 两种绘图接口
import plotly_express as px  # import plotly.express as px
import plotly.graph_objects as go

上面介绍了两种Plotly中绘图的接口:

  • plotly_express:通常简写为px
  • plotly.graph_objects:通常简写为go

内置数据集

在Plotly中内置了非常多的数据集,当我们导入了之后可以直接使用:

1、内置GDP数据集

gapminder = px.data.gapminder() 
gapminder.head()   # 查看前5行数据

2、餐厅消费的数据集

tips = px.data.tips()  
tips.head()

3、数据领域非常著名的鸢尾花数据集

iris = px.data.iris()  
iris.head()

4、一份风力数据集

wind = px.data.wind()        
wind.head()

5、选举结果数据集

election = px.data.election() 
election.head()  # 显示前5行数据

上面只列出了Plotly中的部分数据集,下面的导图记录了全部的内置数据作用及其相应的字段,可供用户免费使用,非常友好:

Plotly绘图

上面介绍了可视化和Plotly的相关知识,下面将通过各种实际的案例来讲解如何利用Plotly绘制相关的可视化图形。

所有的图像在Jupyter notebook中都是动态可视化,本文采取的是截图方式来展示可视化结果。

基础散点图

1、绘制基础的散点图,如果是直接传入两个轴的数据,需要2个参数:

fig = px.scatter(   # scatter绘制散点图
  x=[0,2,4,6],    #  x轴
  y=[1,3,5,7]  # y轴
)

fig.show()

2、如果是使用pandas中的数据库DataFrame来绘制图像:

df = px.data.iris()   # 鸢尾花数据集
df.head()
fig = px.scatter(
  df,  # 数据集
  x="sepal_width",  # x轴
  y="sepal_length"  # y轴
)
fig.show()

3、还可以传入一个颜色参数color,可以选择字符型或者数据型:

  • 字符型数据
fig = px.scatter(
  df,  # 数据集
  x="sepal_width",  # x轴
  y="sepal_length",  # y轴
  color="species",  # 指定颜色:字符型数据
)
fig.show()
  • 数值型数据
fig = px.scatter(
  df,  # 数据集
  x="sepal_width",  # x轴
  y="sepal_length",  # y轴
  color="sepal_length"  # 指定颜色
)
fig.show()

4、传入size参数控制每个点的大小,相当于是在制作气泡图

gap = px.data.gapminder().query("year == 2002")

fig = px.scatter(
  gap   # 绘图数据
  ,x="gdpPercap"  # x轴
  ,y="lifeExp"  # y轴
  ,color="continent"  # 颜色参数
  ,size="pop"   # 点的大小
  ,size_max=60  # 点的最大值
)

fig.show()

5、散点图中显示每个点的数据

x_data = [0,2,4,6,8]
y_data = [1,3,5,7,9]

fig = px.scatter(x=x_data,
                 y=y_data,
                 color=x_data,  # 颜色设置
                 text=x_data  # 显示内容
                )
fig.update_traces(textposition="top center")  # 显示位置:顶部居中

fig.show()

6、绘制折线图:折线图可以理解成散点图的一种极限形式,下面例子中使用go方法实现

import plotly.graph_objects as go


import numpy as np
np.random.seed(1)

# 生成随机数据
N = 200
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N) + 10
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N) - 10

# 准备画布
fig = go.Figure()

# 添加3组不同的数据
fig.add_trace(go.Scatter(  # 
    x=random_x, 
    y=random_y0,               
    mode='lines', # mode模式              
    name='lines')) # 名字

fig.add_trace(go.Scatter(
    x=random_x, 
    y=random_y1,           
    mode='lines+markers',              
    name='lines+markers'))

fig.add_trace(go.Scatter(
    x=random_x, 
    y=random_y2,                 
    mode='markers',               
    name='markers'))

fig.show()

7、绘制3D散点图

import plotly.express as px

df = px.data.iris()

fig = px.scatter_3d(
  df,  # 指定数据
  x='sepal_length',  # 指定xyz
  y='sepal_width', 
  z='petal_width',
  color='species')  # 指定颜色

fig1.show()

绘制柱状图

1、基础柱状图

自行模拟一份数据集:

df1 = pd.DataFrame({
    "name": ["小明","小红","周明","周红","张三"],
    "age": [20,28,18,25,36],
    "score": ["150","170","160","168","154"]
})

df1
fig = px.bar(
  df1,  # 绘图数据
  x="name",  # x轴
  y="age"    # y轴
)

fig.show()

2、加上改变颜色的参数color

fig = px.bar(
  df1,
  x="name",
  y="age",
  color="age"   # 颜色参数
)
fig.show()

3、设置图中的悬停信息

悬停信息指的是:当我们光标放到图形上去才会显示的信息

第一种是基于px方法实现的悬停信息:

fig = px.bar(
  df1,
  x="name",
  y="age",
  color="age",  # 加上颜色参数
  hover_data = ['score']   # 悬停参数
)
fig.show()

第二种是基于go方法实现的悬停信息:

import plotly.graph_objects as go

name = ['Product A', 'Product B', 'Product C']
number = [1200, 1500, 1300]

fig = go.Figure(data=[go.Bar(x=name, 
                             y=number,
                             hovertext=['20% 市场份额 ', '50% 市场份额', '30% 市场份额'])])

fig.update_traces(marker_color='rgb(15,110,225)', # marker颜色
                  marker_line_color='rgb(108,48,107)', # 线条颜色
                  marker_line_width=1.5,   # 线宽
                  opacity=0.6)  # 透明度

fig.update_layout(title_text='3种产品市场份额对比')

fig.show()

4、x轴标签倾斜设置

模拟一份新的数据:

information = pd.DataFrame({
    "days":["2021年3月1日 星期一",
            "2021年3月2日 星期二",
            "2021年3月3日 星期三",
            "2021年3月4日 星期四",
            "2021年3月5日 星期五"],
  
    "number":[400,700,300,500,800]
})

information

默认情况下x轴标签是水平显示:

fig = px.bar(
  information,
  x="days",
  y="number")

fig.show()   # 默认水平显示
fig = px.bar(
  information,
  x="days",
  y="number")

fig.update_layout(xaxis_tickangle=-45)   # 倾斜角度设置

fig.show()   # 结果是向左倾斜

基于go方法实现的x轴标签倾斜:

import plotly.graph_objects as go

months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
          'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']

# 生成画布对象
fig = go.Figure()  

# 添加多个图形轨迹
fig.add_trace(go.Bar(
    x=months,
    y=[20, 14, 25, 16, 18, 22, 19, 15, 12, 16, 14, 17],
    name='产品A',
    marker_color='lightblue'  # 颜色的不同表示方法
))

fig.add_trace(go.Bar(
    x=months,
    y=[19, 14, 22, 14, 16, 19, 15, 14, 10, 12, 12, 16],
    name='产品B',
    marker_color='#af0110'
))

fig.update_layout(barmode='group',  # 柱状图模式
                  xaxis_tickangle=-45   # 倾斜角度
                 )
fig.show()

5、分组柱状图

第一种情况是基于长表形式的分组柱状图:

df2 = pd.DataFrame({
    "姓名": ["小明","小红","张三","小明","小红","张三","小明","小红","张三"],
    "科目":["语文","语文","语文","数学","数学","数学","英语","英语","英语"],
    "得分": [58,78,84,90,71,90,64,84,69]
})

df2
fig = px.bar(
  df2,
  x="姓名",
  y="得分",
  color="科目")

fig.show()

第二种情况是基于宽表形式的分组柱状图:

df3 = pd.DataFrame({
    "姓名": ["小明","小红","张三"],
    "语文":[58,78,84],
    "数学":[90,71,90],
    "英语":[64,84,69]
})

df3
fig = px.bar(
  df3,
  x="姓名",
  y=["语文","数学","英语"],
  title="学生成绩对比"  # 添加标题
)
fig.show()

6、多面柱状图

使用的是Plotly中自带的餐厅消费数据集:

fig = px.bar(
  df4,   # 带绘图数据 
  x="sex",  # x轴
  y="total_bill",   # y轴
  color="smoker",  # 颜色的设置
  barmode="group",  # 柱状图4种模式之一
  facet_row="time",  #  行
  facet_col="day",  # 列
  category_orders={
    "day": ["Thur", "Fri", "Sat", "Sun"],
    "time": ["Lunch", "Dinner"]   # 分类顺序设置
  }
)

fig.show()

7、改变柱状图基准位置

import plotly.graph_objects as go

years = ['2017','2019','2021']

fig = go.Figure()

fig.add_trace(go.Bar(
    x=years, 
    y=[2000, 3000, 5000],
    base=[-2000,-3000,-5000],  # 基准位置设置
    marker_color='crimson',
    name='商家A'))

fig.add_trace(go.Bar(
    x=years, 
    y=[3000, 4000, 2000],
    base=0,  # 默认的基准设置
    marker_color='lightslategrey',
    name='商家B'
))

fig.show()

8、改变图例位置和颜色

有时候我们需要改变图例的颜色和位置,进行如下设置:

import plotly.graph_objects as go

subjects = ["语文","数学","英语","物理","化学","生物"]

fig = go.Figure()
fig.add_trace(go.Bar(
    x=subjects,   # x轴、y轴数据             
    y=[90,85,78,90,99,80],                
    name='周均',  # 图例名称           
    marker_color='rgb(15, 83, 109)'  # 该组数据颜色
                
))

fig.add_trace(go.Bar(
    x=subjects,               
    y=[80,89,68,100,78,90],               
    name='小明',               
    marker_color='rgb(180, 118, 255)'
                ))

fig.update_layout(
    title='期末成绩对比情况',  # 整个图的标题
    xaxis_tickfont_size=12,   # x轴字体大小
    yaxis=dict(
        title='成绩',  # y轴的标题
        titlefont_size=16,  # 标题大小
        tickfont_size=6,  # y轴上的数值大小
    ),
    legend=dict(
        x=0,  # 图例的位置
        y=1,
#         bgcolor='rgba(255, 255, 255, 0)',  # 图例的背景色
        bordercolor='rgba(112, 255, 255, 0)'   # 边缘颜色
    ),
    barmode='group',  # 柱状图模式
    bargap=0.5,  # 组间距离
    bargroupgap=0.4  # 组内距离
)

fig.show()

绘制水平柱状图

1、基于px实现水平柱状图,加上参数orientation='h'

df1 = pd.DataFrame({
    "name": ["小明","小红","周明","周红","张三"],
    "age": [20,28,18,25,36],
    "score": ["150","170","160","168","154"]
})

df1
fig = px.bar(
    df1,
    y="name",   # xy轴的数据需要交换
    x="age",
    orientation='h',   # 水平柱状图
    text="age"   # 需要显示的数据
)

# 设置文本显示的位置,默认是里面
# fig.update_traces(textposition="outside")  # ['inside', 'outside', 'auto', 'none']

fig.show()

2、改变柱状图颜色

第一种方法是使用颜色参数color

fig = px.bar(
    df1,
    y="name",   
    x="age",
    color="age",  # 颜色参数
    orientation='h',   # 水平柱状图
    text="age"   
)

fig.update_traces(textposition="outside")  # ['inside', 'outside', 'auto', 'none']

fig.show()

第二种情况是自定义颜色

fig = px.bar(
    df1,
    y="name",   
    x="age",
#     color="age",
    # 自定义颜色
    color_discrete_sequence=px.colors.diverging.RdBu,
    orientation='h',   # 水平柱状图
    text="age"   
)

fig.update_traces(textposition="outside")  # ['inside', 'outside', 'auto', 'none']

fig.show()

3、基于go方法实现

fig = go.Figure(go.Bar(
            x=df1["score"].tolist(),  # x轴数据
            y=df1["name"].tolist(),  # y轴数据
            orientation='h'))

fig.show()

4、分组水平柱状图

import plotly.graph_objects as go

# 生成画布
fig = go.Figure()

# 添加3个图形轨迹
fig.add_trace(go.Bar(
    y=['小明', '小红', '张三'],
    x=[120, 74, 103],
    name='语文',
    orientation='h',
    marker=dict(
        color='rgba(246, 78, 139, 0.6)',
        line=dict(color='rgba(246, 78, 139, 1.0)', width=3)
    )
))

fig.add_trace(go.Bar(
    y=['小明', '小红', '张三'],
    x=[92, 128, 89],
    name='数学',
    orientation='h',
    marker=dict(
        color='rgba(5, 71, 80, 0.6)',
        line=dict(color='rgba(58, 71, 80, 1.0)', width=3)
    )
))

fig.add_trace(go.Bar(
    y=['小明', '小红', '张三'],
    x=[92, 78, 69],
    name='英语',
    orientation='h',
    marker=dict(
        color='rgba(18, 7, 80, 0.6)',
        line=dict(color='rgba(58, 71, 80, 1.0)', width=3)
    )
))

fig.update_layout(barmode='stack')  # 堆叠模式:['stack', 'group', 'overlay', 'relative']

fig.show()

绘制漏斗图

漏斗图在电商销售领域使用的非常普遍,它能够明显地观察到不同阶段之间的转化效果,下面通过不同的例子来讲解漏斗图的制作。

1、普通漏斗图

自行模拟一份数据:

data1 = pd.DataFrame({
    "number": [1200,900,700,400,180,100],
    "stage": ["浏览网站","搜索","加购","提交订单","点击支付","支付成功"]}
)
data1
# 绘图
fig = px.funnel(
    data1,   # 绘图数据
    x="number",  # x轴数据
    y="stage"  # y轴数据
)

fig.show()

通过go方法来实现基础漏斗图:

from plotly import graph_objects as go

fig = go.Figure(go.Funnel(
    x=[1000,800,400,100],
    y=["浏览网站","加购","点击支付","支付成功"]
))

fig.show()

还可以给漏斗图改变颜色,只需要加上颜色参数color

# 加上颜色参数color

fig = px.funnel(
  data1[::-1],   # 数据翻转
  x="number",
  y="stage",
  color="stage"   # 改成stage
)

fig.show()

2、分组漏斗组的展示

将不同组别的漏斗图放在一个大的画布中,我们生成2020年3月份和2021年3月份的数据,绘制分组漏斗图:

# 2020年3月数据

stage=["浏览网站","加购","点击支付","支付成功"]

df1 = pd.DataFrame(dict(
    number=[1000,800,400,100],
    stages=stage
))

df1["time"] = "2020年3月"
df1
# 2021年3月份

stage=["浏览网站","加购","点击支付","支付成功"]
df2 = pd.DataFrame(dict(
    number=[1200,600,300,140],
    stages=stage
))

df2["time"] = "2021年3月"
df2

上面生成了两个月份的不同数据,现在通过concat函数进行数据的合并:

# 将两组数据合并
df3 = pd.concat([df1, df2], axis=0)
df3

最后通过funnel()方法来绘图:

# 绘图

fig = px.funnel(df3,x="number",y="stages",color="time")
fig.show()

3、通过go方法来实现分组漏斗

from plotly import graph_objects as go

stage = ["浏览网站","加购","点击支付","支付成功"]

fig = go.Figure()

fig.add_trace(go.Funnel(
    name = "2020年3月",  # 图形轨迹名称
    x = [1000,800,400,200],  # 数据
    y = stage, # 每个阶段名称
    orientation = "h",  # 方位
    textposition = "inside",  # 文本内容的位置
    textinfo = "value+percent previous"  # 显示文本内容
))


fig.add_trace(go.Funnel(
    name = "2021年2月",   # 名称和数据需要改变
    x = [1200,900,500,240],  
    y = stage, 
    orientation = "h",  
    textposition = "inside",  
    textinfo = "value+percent total"  
))

fig.add_trace(go.Funnel(
    name = "2021年3月",  # 名称和数据需要改变
    x = [1500,1000,450,300],  
    y = stage, 
    orientation = "h",  
    textposition = "inside",  
    textinfo = "label+percent initial"  
))

fig.show()

绘制饼图

饼图在可视化图表中是一种非常常见的图,它能够很好地展示不同组别的占比情况,下面通过具体的案例来绘制不同需求的饼图。

1、基础饼图的绘制

模拟一份水果店的进货数量的数据,如下表:

fruit = pd.DataFrame({
    "name":["苹果","香蕉","梨","菠萝","葡萄"],
    "number":[1000,800,600,2000,2500]
})

fruit
fig = px.pie(
  fruit,  # 绘图数据
  names="name",  # 显示的名称
  values="number"  # 显示的数据
)

fig.show()

基于go方法实现基础饼图:

import plotly.graph_objects as go

name=fruit["name"].tolist()
value=fruit["number"].tolist()  

fig = go.Figure(
    data=[go.Pie(
        labels=name,  # 标签
        values=value  # 显示数据
    )]
)

fig.show()

结果和上面的图形相同

2、给饼图添加标题,并改变位置

fig = px.pie(
  fruit,
  names="name",
  values="number"
)

fig.update_layout(
    title={   # 设置整个标题的名称和位置
        "text":"水果数量占比",  # 标题
        "y":0.96,  # 通过4个参数控制标题位置
        "x":0.5,
        "xanchor":"center",
        "yanchor":"top"
    }
)

fig.show()

3、改变饼图颜色

上面绘制的饼图是默认的颜色,我们可以对颜色进行设置

第一种是加上颜色参数color:

fig = px.pie(
  fruit,
  names="name",
  values="number",
  color="number"  # 颜色参数
)
fig.show()

第二种是通过参数color_discrete_sequence

fig = px.pie(
  fruit,
  names="name",
  values="number",
  # 不同颜色:RdBu、Peach
  color_discrete_sequence=px.colors.sequential.Plotly3   # Plotly3可以变成不同颜色
)
fig.show()

第三种是通过字典的形式来设置颜色:

fig = px.pie(
  fruit,
  names="name",
  values="number",
  color="name",
  color_discrete_map={   # 下面是通过字典形式来设置每个分组的颜色
    '葡萄':'lightcyan',
    '菠萝':'cyan',
    '苹果':'royablue',
    '香蕉':'darkblue',
    '梨':'red'}
)
fig.show()

4、饼图文本信息设置

fig = px.pie(
  fruit,
  names="name",
  values="number"
)

fig.update_traces(
  # 文本显示的4种位置:['inside', 'outside', 'auto', 'none']
  textposition='inside',   
  # percent、label、value的组合或者单独出现
  textinfo='percent+label',  
  # 文本信息的3种朝向:horizontal(默认)、radial、tangential
  insidetextorientation='horizontal'
)

fig.show()

5、甜甜圈图的绘制

甜甜圈图指的是饼图的中间出现了一个空洞部分:

import plotly.graph_objects as go

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']
values = [3000, 1500, 1000, 2500]

fig = go.Figure(data=[go.Pie(
    labels=labels, 
    values=values, 
    hole=.4   # 空洞的比例大小
)])

fig.show()

6、剥离扇形区域

import plotly.graph_objects as go

labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']
values = [3000, 1000, 4000, 2500]

fig = go.Figure(data=[go.Pie(
    labels=labels, 
    values=values, 
    pull=[0.3,0.1,0,0]  # 设置脱离参数
)])

fig.show()

7、旭日图的制作

我们以Plotly中自带的tips消费数据来绘制旭日图:

fig = px.sunburst(
  tips,
  path=['day','time','sex'],  # 最里层是day,中间是time,最外层是sex
  values='total_bill'
)

fig.show()

给旭日图设置颜色:

df = px.data.tips()
fig = px.sunburst(
  df, 
  path=['time', 'sex', 'day'],  # 从最里层到最外层
  values='total_bill',   # 数据
  color='day'   # 颜色
)
fig.show()

绘制面积图

使用的是Plotly中自带的gdp数据集:

# area 图
px.area(
  gapminder,  # 数据集  
  x="year",  # xy轴的数据
  y="pop",
  color="continent",  # 颜色
  line_group="country"  # 线型分组
)
image-20210508105829524
image-20210508105829524

绘制直方图

px.histogram(
    tips,  # 绘图数据
    x="sex",  # 指定两个数轴
    y="tip",
    histfunc="avg",  # 直方图函数:均值
    color="smoker",  # 颜色取值
    barmode="group",  # 柱状图模式
    facet_row="time",  # 横纵纵轴的字段设置
    facet_col="day",
    category_orders={"day":["Thur","Fri","Sat","Sun"],  # 分类
                     "time":["Lunch","Dinner"]})

联合分布图

联合分布图是将多个不同类型的图形放置在一个大的画布中,比如我们使用鸢尾花数据集绘制联合分布图:

px.scatter(
    iris,
    x="sepal_width",
    y="sepal_length",
    color="species",
    marginal_x="histogram",
    marginal_y="rug"
)

绘制散点矩阵图

散点矩阵图是将多个散点图并排显示,同时显示不同指标之间的关系:

使用Plotly中自带的iris数据集:

px.scatter_matrix(
  iris,  # 绘图数据
  dimensions=["sepal_width","sepal_length","petal_width","petal_length"],  # 不同的指标
  color="species"  # 颜色
)

绘制密度图

第一种是绘制密度热力图:

px.density_heatmap(
  iris,
  x="sepal_width",
  y="sepal_length",
  marginal_y="rug",
  marginal_x="histogram"   # 在密度图的基础上,指定另外两种图形
)

第二种是绘制等值线图:

px.density_contour(
  iris,  # 传入绘图数据
  x="sepal_width",  # 指定xy轴
  y="sepal_length",
  color="species",  # 颜色设置
  marginal_x="rug",  # 需要传入边缘图形
  marginal_y="histogram"   
)

绘制并行分类图

使用的是餐厅消费数据tips

px.parallel_categories(
    tips,  # 传入数据
    color="size",  # 颜色取值
    color_continuous_scale=px.colors.sequential.Inferno # 颜色变化趋势
)

绘制地图图形

第一种方法是通过px.choropleth

px.choropleth(
  gapminder,   # 绘图数据
  locations="iso_alpha",  # 位置
  color="lifeExp",  # 颜色
  hover_name="country",  # 悬停信息
  animation_frame="year",  # 播放按钮设置
  color_continuous_scale=px.colors.sequential.Plasma,  # 颜色连续变化
  projection="natural earth"  # 地图选择

第二种方法是通过line_geo实现:

gapminder = px.data.gapminder()

# gapminder_2002 = gapminder.query("year==2002")

gapminder_2002 = gapminder[gapminder["year"] == 2002]
gapminder_2002

px.line_geo(
  gapminder_2002,
  locations="iso_alpha",
  color="continent",
  projection="orthographic")

绘制矩阵式树状图

# 选取2002年数据
gapminder_2002 = gapminder[gapminder["year"] == 2002]

px.treemap(
    gapminder_2002, # 数据
    path=[px.Constant('world'), 'continent', 'country'],   # 绘图路径:world---continent---country
    values='pop',  # 数据取值
    color='pop',   # 颜色取值
    hover_data=['iso_alpha'])  # 显示数据:国家简称

绘制散点极坐标图

使用的是Plotly中自带的风力wind数据集:

px.scatter_polar(
    wind,  #  数据集
    r="frequency",  # 半径
    theta="direction",   # 角度
    color="strength",  # 颜色
    symbol="strength",  # 符号
    color_discrete_sequence=px.colors.sequential.Plasma_r)  # 颜色

改变图形的背景主题再绘制一次:

fig = px.bar_polar(
    wind,   # 数据集
    r="frequency",   # 半径
    theta="direction",  # 角度
    color="strength",  # 颜色
    template="plotly_dark",  # 主题
    color_discrete_sequence=px.colors.sequential.Plasma_r)  # 颜色
fig.show()

颜色面板

Plotly中内置了多种颜色面板可供用户使用,颜色可任意选择,下面进行介绍:

顺序色标系列

渐变的颜色系列,适用于大多数连续数据进行绘图:

px.colors.sequential.swatches()

定性色标系列

该系列的颜色是离散型的,每个子颜色都不相同或者相近,适用于没有自然顺序的数据进行绘图:

px.colors.qualitative.swatches()

分散色标系列

适合于具有自然中点的连续数据,色系会出现突变:

px.colors.diverging.swatches()

周期性色标系列

该色标系列适用于具有自然周期结构的连续数据

px.colors.cyclical.swatches()

ColorBrewer2系列

px.colors.colorbrewer.swatches()

CMOcean系列

px.colors.cmocean.swatches()

卡通主题系列

这是一个卡通系列的颜色面板,颜色是渐变型的

px.colors.carto.swatches()

总结

本文着重讲解了一个新的高级可视化神器:Plotly。从其特点、安装、内置数据集、各种精美图表制作案例介绍、颜色面板等,详细地介绍了Plotly的使用,希望能够对读者有所帮助,也希望读者能够爱上这个高级可视化神器。

标签:name,05,color,08,show,fig,go,px,2021
来源: https://blog.csdn.net/qq_25443541/article/details/116527358

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有