介绍
plotly是一个易于使用,功能强大的python绘图库,用于构建可交互式的图表(可以自行运行后使用鼠标拖拽图片试试),本系列文章将介绍plotly绘制各种类型图的方法,本文将介绍——气泡图
气泡图
基础气泡图
代码解释
-
import plotly.graph_objects as go:这行代码首先导入了Plotly库中的graph_objects模块,并将其重命名为go。这样做是为了方便后续代码中对graph_objects模块的引用。
-
fig = go.Figure():这行代码创建了一个Figure对象,这个对象是Plotly中所有图表的基础。你可以把它想象成一个空白的画布,之后可以在其上添加数据和其他图表元素。
-
data=[go.Scatter(…)]:这里定义了一个包含单个Scatter对象的列表,这个Scatter对象将被添加到Figure对象中。Scatter对象是用来创建散点图的,它需要至少两个属性:x和y,分别代表散点图的横坐标和纵坐标。
-
mode=‘markers’:这个参数指定了Scatter对象的绘制模式。‘markers’模式意味着图表中只会显示数据点,而不会显示连接这些点的线。其他可能的模式包括’lines’(连接点的线)和’lines+markers’(既有线也有点)。
-
marker_size=[40, 60, 80, 100]:这个参数定义了每个数据点的大小。列表中的每个元素对应于x和y中相应位置的数据点。在这个例子中,第一个点的大小是40,第二个点的大小是60,以此类推。
import plotly.graph_objects as go
fig = go.Figure(data=[go.Scatter(
x=[1, 2, 3, 4], y=[10, 11, 12, 13],
mode='markers',
marker_size=[40, 60, 80, 100])
])
fig.show()
给气泡图设置标记和大小颜色
代码解释
-
color=[‘rgb(93, 164, 214)’, ‘rgb(255, 144, 14)’, ‘rgb(44, 160, 101)’, ‘rgb(255, 65, 54)’]:这个键值对设置了不同标记的颜色。列表中的每个字符串都是一个RGB颜色代码,用于定义四种不同的颜色。RGB颜色代码是一种表示颜色的方式,它由三个介于0到255之间的整数组成,分别代表红色、绿色和蓝色的强度。例如,'rgb(93, 164, 214)'代表一种蓝色调,而’rgb(255, 65, 54)'代表一种红色调。
-
opacity=[1, 0.8, 0.6, 0.4]:这个键值对定义了标记的不透明度。不透明度是一个介于0(完全透明)到1(完全不透明)之间的数值。在这个例子中,第一个标记的不透明度为1(即完全不透明),第二个标记的不透明度为0.8,第三个为0.6,第四个为0.4。这意味着随着索引的增加,标记将逐渐变得更加透明。
-
size=[40, 60, 80, 100]:这个键值对设置了标记的大小。列表中的每个数值代表一个标记的直径(或者大小),单位是像素。在这个例子中,四个标记的大小分别为40、60、80和100像素。
import plotly.graph_objects as go
fig = go.Figure(data=[go.Scatter(
x=[1, 2, 3, 4], y=[10, 11, 12, 13],
mode='markers',
marker=dict(
color=['rgb(93, 164, 214)', 'rgb(255, 144, 14)',
'rgb(44, 160, 101)', 'rgb(255, 65, 54)'],
opacity=[1, 0.8, 0.6, 0.4],
size=[40, 60, 80, 100],
)
)])
fig.show()
带色阶的气泡图
代码解释
-
color=[120, 125, 130, 135, 140, 145]:这个列表定义了每个数据点的颜色。这里的颜色值是以简写形式给出的,每个值代表一个介于0到255之间的灰度值。例如,120代表中等亮度的灰色。
-
size=[15, 30, 55, 70, 90, 110]:这个列表定义了每个数据点的大小。数值越大,数据点在图表中显示得越大。
-
showscale=True:这个参数设置为True表示在图表中显示颜色的尺度滑块(color scale)。颜色尺度滑块是一种交互式元素,允许用户通过调整滑块来改变数据点的颜色映射。在这个例子中,由于颜色列表是单调递增的灰度值,尺度滑块将允许用户选择不同的颜色映射方式,以便更好地理解数据点的颜色变化。
import plotly.graph_objects as go
fig = go.Figure(data=[go.Scatter(
x=[1, 3.2, 5.4, 7.6, 9.8, 12.5],
y=[1, 3.2, 5.4, 7.6, 9.8, 12.5],
mode='markers',
marker=dict(
color=[120, 125, 130, 135, 140, 145],
size=[15, 30, 55, 70, 90, 110],
showscale=True
)
)])
fig.show()
分类气泡图
-
df = px.data.gapminder():这行代码从Plotly Express库中加载了一个内置的Gapminder数据集,并将其存储在变量df中。Gapminder数据集包含了多个国家从1952年到2007年间的经济发展指标,如人均GDP、人口数量等。
-
df.query(“year==2007”):这是一个Pandas DataFrame的查询操作,它从Gapminder数据集中筛选出年份为2007的记录。这意味着散点图将仅展示2007年的数据。
-
x=“gdpPercap”:这个参数指定了散点图的横轴变量,即人均GDP。这将根据每个国家的人均GDP值在横轴上定位数据点。
-
y=“lifeExp”:这个参数指定了散点图的纵轴变量,即寿命。这将根据每个国家的平均寿命在纵轴上定位数据点。
-
size=“pop”:这个参数指定了数据点的大小,根据每个国家的人口数量来缩放数据点的大小。人口越多的国家,其数据点在图表中显示得越大。
-
color=“continent”:这个参数指定了数据点的颜色,根据每个国家所在的大陆来为数据点上色。这样可以在图表中直观地区分不同大陆的国家。
-
hover_name=“country”:这个参数设置了鼠标悬停时显示的信息,当用户将鼠标悬停在某个数据点上时,将显示该数据点对应的国家名称。
-
log_x=True:这个参数表示横轴(人均GDP)将使用对数刻度。对数刻度有助于展示跨越多个数量级的数据,使得低收入和高收入国家之间的差异更加明显。
-
size_max=60:这个参数设置了数据点大小的最大值。在这个例子中,无论人口多少,数据点的最大直径都不会超过60个像素,以避免过大的数据点遮挡其他数据点或图表元素。
import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",
size="pop", color="continent",
hover_name="country", log_x=True, size_max=60)
fig.show()