目录
气泡图(Bubble Chart)是散点图的一种变体。
它在原有的以横纵坐标为变量的基础上,引入第三个变量,用气泡的大小来表示。
因此,气泡图能够同时展示三个变量之间的关系。
1. 气泡图的构成
气泡图可以理解为扩展的散点图(Scatter Plot)。因为人们对圆形和颜色的感知相对直观,这种可视化方式能够帮助非专业人士更好地理解数据。其主要构成包括:
- X轴和Y轴:分别表示两个变量,用来确定气泡的位置。
- 气泡大小:气泡的面积或半径反映第三个变量的数值大小,数据的大小可以一目了然。
- 气泡颜色(可选):用颜色来表示第四个变量或类别信息,方便比对,这样就可以达到支持分组和分类的作用。
2. 气泡图的适用场景
气泡图常用于需要展示多变量关系的场景,例如:
- 展示多维信息:气泡图能够同时展示多个变量之间的关系,使得数据分析和信息传达更加直观和高效。如展示销售额(X轴)、利润(Y轴)、市场规模(气泡大小)。
- 识别趋势与模式:通过气泡的大小和颜色,可以轻松地识别数据中的趋势、模式和异常值。如人口统计中用气泡大小代表国家人口,X轴表示GDP,Y轴表示人均收入。
- 强调异常值:当一个气泡远离其他气泡时,它可能表示一个数据点与其他点有显著不同的值,这有助于进一步研究和分析异常。
3. 气泡图局限性
气泡图也有其局限性如:
- 信息过载:如果气泡太多,会显得杂乱无章。
- 大小误解:人眼对面积大小的感知不够精确,可能影响数据解读。
- 维度限制:虽然可以表示四个变量,但超过四维会导致理解困难。
4. 气泡图的代码实现
4.1 Python 代码
Dash 模块是一个非常好用的模块!
请注意,在气泡图的代码实现中,和散点图不一样的就是 go.Scatter 函数中的这个参数
size=np.random.rand(30) * 50,
当size 是固定值时候,可以理解为散点图,当size是动态变化时候,就是气泡图。
import dash
from dash import html, dcc
import plotly.graph_objects as go
import dash_bootstrap_components as dbc
import numpy as np
def create_advanced_charts():
"""
创建高级图表示例
返回一个包含多个图表的列表
"""
# 2. 气泡图
np.random.seed(42)
bubble_fig = go.Figure(data=[
go.Scatter(
x=np.random.rand(30),
y=np.random.rand(30),
mode='markers',
marker=dict(
size=np.random.rand(30) * 50,
color=np.random.rand(30),
colorscale='Viridis',
showscale=True,
sizemode='area'
),
text=['气泡 ' + str(i) for i in range(30)]
)
])
bubble_fig.update_layout(
title='气泡图示例',
xaxis_title='X轴',
yaxis_title='Y轴',
template='plotly_white'
)
return(bubble_fig)
app = dash.Dash(__name__)
app.layout = html.Div([
html.H3("高级图表展示", className="text-center mt-4 mb-3"),
dcc.Graph(figure=create_advanced_charts())
])
if __name__ == "__main__":
app.run_server(debug=True, port=8051)