绘图平行坐标和类别

问题描述 投票:0回答:1

在数据框中,A 列和 B 列是分类数据,而 X 列和 Y 列是数值数据和连续数据。如何使用plotly绘制平行坐标+类别图,使得对应于A和B的前两个y轴是分类的,而对应于X和Y的后两个y轴是数值的?

例如,考虑以下数据。

    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]})

我尝试过

plotly.express.parallel_categories
。但这将所有数值视为类别。另一方面,
plotly.express.parallel_coordinates
省略了分类列。

python plotly parallel-coordinates
1个回答
0
投票

您可以先将分类数据转换为数值数据,然后使用

plotly.express.parallel_coordinates
函数绘制图表。

因为

plotly.express.parallel_coordinates
主要用于处理数值数据,而
plotly.express.parallel_categories
用于处理分类数据。

示例:

import pandas as pd
import plotly.express as px

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]})

#Convert categorical data to numerical data
df['A_cat'] = df['A'].astype('category').cat.codes
df['B_cat'] = df['B'].astype('category').cat.codes

# Draw parallel coordinate plot
fig = px.parallel_coordinates(df,
                               dimensions=['A_cat', 'B_cat', 'X', 'Y'],
                               labels={'A_cat': 'A', 'B_cat': 'B', 'X': 'X', 'Y': 'Y'},
                               color="X",
                               color_continuous_scale=px.colors.diverging.Tealrose,
                               color_continuous_midpoint=2)

# Update the chart layout to show the original category labels
fig.update_layout(
     xaxis=dict(
         tickvals=[0, 1, 2, 3],
         ticktext=['A', 'B', 'X', 'Y']
     )
)

fig.show()
© www.soinside.com 2019 - 2024. All rights reserved.