介绍
plotly是一个易于使用,功能强大的python绘图库,用于构建可交互式的图表(可以自行运行后使用鼠标拖拽图片试试),本系列文章将介绍plotly绘制各种类型图的方法,本文将介绍——填充区域图
区域填充图
基础填充图
代码解释
-
df = px.data.gapminder():这行代码从Plotly Express库中加载了一个内置的Gapminder数据集,并将其存储在变量df中。Gapminder数据集包含了多个国家从1952年到2007年间的经济发展指标,如人均GDP、人口数量等。
-
fig = px.area(…):这行代码调用了Plotly Express库中的area函数,用于创建一个面积图,并将结果存储在变量fig中。面积图是一种常用的图表类型,用于展示数据随时间的变化趋势,并且可以通过颜色填充来区分不同的数据系列。
-
x=“year”:这个参数指定了面积图的横轴变量,即年份。这将根据每个年份的数据在横轴上展示人口的变化。
-
y=“pop”:这个参数指定了面积图的纵轴变量,即人口数量。这将根据每个国家的人口数量在纵轴上展示数据的变化。
-
color=“continent”:这个参数指定了不同面积系列的颜色变量,即根据每个国家的所属大陆来为面积系列上色。这样可以在图表中直观地区分不同大陆的人口变化趋势。
-
line_group=“country”:这个参数指定了面积图的分组变量,即根据每个国家的名称来分组。这意味着每个国家的人口变化将被绘制为一个单独的面积层,并且每个面积层将根据color参数指定的大陆颜色进行填充。
import plotly.express as px
df = px.data.gapminder()
fig = px.area(df, x="year", y="pop", color="continent", line_group="country")
fig.show()
图案填充
代码解释
-
df = px.data.medals_long():这行代码从Plotly Express库中加载了一个内置的奥运会奖牌数据集,并将其存储在变量df中。这个数据集包含了不同国家在多届奥运会上获得的奖牌数量。
-
fig = px.area(df, x=“medal”, y=“count”, color=“nation”):这行代码调用了Plotly Express库中的area函数,用于创建一个面积图,并将结果存储在变量fig中。
-
x=“medal”:指定了面积图的横轴变量,即奖牌类型(金牌、银牌、铜牌)。
-
y=“count”:指定了面积图的纵轴变量,即每种奖牌的数量。
-
color=“nation”:指定了面积图的颜色变量,即根据每个国家的奖牌数量来上色,从而在图表中区分不同国家的奖牌数量。
-
pattern_shape=“nation”:这个参数指定了面积图中每个国家的图案形状,用于进一步区分不同国家的面积区域。"nation"表示图案形状将根据国家的名称变化。
-
pattern_shape_sequence=[“.”, “x”, “+”]:这个参数定义了一个图案形状的序列,用于在面积图中表示不同的国家。序列中的每个形状将按顺序分配给不同的国家。例如,第一个国家可能使用.作为图案形状,第二个国家使用"x",第三个国家使用"+",依此类推。
import plotly.express as px
df = px.data.medals_long()
fig = px.area(df, x="medal", y="count", color="nation",
pattern_shape="nation", pattern_shape_sequence=[".", "x", "+"])
fig.show()
渐变填充
代码解释
-
fig = go.Figure():首先创建了一个Figure对象,它是Plotly中所有图表的基础。这个对象可以包含多个图层(如散点图、线图、柱状图等),并且可以进一步自定义和操作。
-
第一个go.Scatter对象:
x=[1, 2, 3, 4]:这是第一个图层的横坐标数据,一个包含4个元素的列表。
y=[3, 4, 8, 3]:这是第一个图层的纵坐标数据,与横坐标数据相对应。
fill=None:这个参数指定了线条下方是否填充颜色。None表示不填充,即只显示线条本身。
mode=“lines”:这个参数指定了图层的模式。"lines"表示图层将显示为线图,连接所有的数据点。
line_color=“darkblue”:这个参数设置了线条的颜色为深蓝色。 -
第二个go.Scatter对象:
x=[1, 2, 3, 4]和y=[1, 6, 2, 6]:这是第二个图层的横坐标和纵坐标数据,与第一个图层的x轴数据相同,但y轴数据不同。
fill=“tonexty”:这个参数指定了填充区域的类型。"tonexty"表示填充区域将从当前数据点延伸到下一个数据点的y轴值。
mode=“lines”:与第一个图层相同,表示图层将显示为线图。
line_color=“darkblue”:设置线条颜色为深蓝色。
fillgradient=dict(type=“horizontal”, colorscale=[(0.0, “darkblue”), (0.5, “royalblue”), (1.0, “cyan”)]):这个参数定义了填充区域的渐变样式。
type=“horizontal”:表示渐变是水平的,即从左到右变化。
colorscale:定义了渐变的颜色范围,从0.0(深蓝色)到0.5(宝蓝色)再到1.0(青色)。
import plotly.graph_objects as go
fig = go.Figure(
[
go.Scatter(
x=[1, 2, 3, 4],
y=[3, 4, 8, 3],
fill=None,
mode="lines",
line_color="darkblue",
),
go.Scatter(
x=[1, 2, 3, 4],
y=[1, 6, 2, 6],
fill="tonexty",
mode="lines",
line_color="darkblue",
fillgradient=dict(
type="horizontal",
colorscale=[(0.0, "darkblue"), (0.5, "royalblue"), (1.0, "cyan")],
),
),
]
)
fig.show()