Plotly 平行坐标与分类
在一个数据表中,A列和B列是分类数据,而X列和Y列是数字且是连续的。我要怎么用plotly画一个平行坐标图加上分类图,使得前两个Y轴对应A和B是分类的,后两个对应X和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
又不支持分类列。
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()