返回

如何使用 Plotly 创建包含分类和连续数据的并行坐标图?

python

## 并行坐标图:处理分类和连续数据

概述

并行坐标图是一种多维数据可视化工具,它可以同时显示多个变量之间的关系。它对于探索和比较不同组别中的数据分布非常有用。在本文中,我们将介绍如何使用 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. 如何调整并行坐标图的范围?

使用 radialaxisangularaxis 选项更新并行坐标图的范围。

3. 如何添加工具提示?

使用 hoverinfo 选项添加工具提示。

4. 如何导出图表?

可以使用 write_image() 函数导出图表。

5. 如何与交互式图表?

使用 plotly.io.show() 函数可以与交互式图表进行交互。