如何使用 Plotly 创建包含分类和连续数据的并行坐标图?
2024-03-20 02:55:20
## 并行坐标图:处理分类和连续数据
概述
并行坐标图是一种多维数据可视化工具,它可以同时显示多个变量之间的关系。它对于探索和比较不同组别中的数据分布非常有用。在本文中,我们将介绍如何使用 Plotly 创建并行坐标图,其中前两条 y 轴对应于分类数据,后两条 y 轴对应于数值连续数据。
创建并行坐标图
1. 加载数据
首先,我们需要加载数据到 Pandas DataFrame 中。确保数据具有适当的列类型,其中分类数据为对象类型,数值数据为数字类型。
2. 创建子图
使用 Plotly 的 make_subplots()
函数创建一个用于绘制并行坐标图的子图。指定 subplot_titles 选项以设置图表的标题。
3. 添加分类数据
使用 go.Scatterpolar()
添加分类数据。设置 mode='markers' 以显示标记,设置 thetaunit='radians' 以使用弧度单位,并指定分类数据的角度范围。
4. 添加数值数据
使用 go.Scattergl()
添加数值数据。设置 type='scattergl' 以使用 WebGL 渲染,指定角度范围和线宽。
5. 更新布局
最后,更新布局选项,如标题、背景色和图例。
示例代码
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
# 创建 DataFrame
df = pd.DataFrame({'A':['a','a','b','b'],
'B':['1','2','1','2'],
'X':[5.3,6.7,3.1,0.8],
'Y':[0.4,0.6,3.6,4.8]})
# 创建并行坐标图
fig = make_subplots(rows=1, cols=1, subplot_titles=["Parallel Coordinates"])
# 添加分类数据
fig.add_trace(
go.Scatterpolar(r=df['X'], theta=[0, 2*np.pi],
mode='markers', marker_size=8, marker_color=df['A'],
thetaunit='radians', name='A'),
row=1, col=1
)
fig.add_trace(
go.Scatterpolar(r=df['Y'], theta=[0, 2*np.pi],
mode='markers', marker_size=8, marker_color=df['B'],
thetaunit='radians', name='B'),
row=1, col=1
)
# 添加数值数据
fig.add_trace(
go.Scattergl(x=df['X'], y=df['Y'], mode='lines', line_width=2,
name='X'),
row=1, col=1
)
fig.update_layout(title="Parallel Coordinates with Categories",
height=700, width=700, showlegend=True,
polar={
'radialaxis': [{'visible': True}],
'angularaxis': [{'visible': True},
{'visible': True}]
})
fig.show()
结论
通过使用 Plotly,我们可以轻松创建包含分类和连续数据的并行坐标图。这种图表类型可以提供有价值的见解,帮助我们了解数据之间的复杂关系。
常见问题解答
1. 如何更改分类数据的颜色?
使用 marker_color
选项指定分类数据的颜色。
2. 如何调整并行坐标图的范围?
使用 radialaxis
和 angularaxis
选项更新并行坐标图的范围。
3. 如何添加工具提示?
使用 hoverinfo
选项添加工具提示。
4. 如何导出图表?
可以使用 write_image()
函数导出图表。
5. 如何与交互式图表?
使用 plotly.io.show()
函数可以与交互式图表进行交互。