Sil*_*oud 2 python plotly sunburst-diagram plotly-python
我正在尝试为著名的Kaggle Titanic 挑战做一些数据可视化。我想绘制几个饼图,旭日变体,在内圈中放入一些特定特征(性别,机票类别,...),在外圈上放置该特征幸存/死亡。
这是一个例子:
我想对内圈和外圈使用不同的颜色。例如,蓝色/粉色代表男性/女性,绿色/灰色代表幸存者/死亡者。我做不到,如果我按性别区分,我就无法按生存区分,反之亦然。
这是我的代码:
color_discrete_sequence = ['#8B25BE', '#2D9157', '#2D5F91', '#97909A']
fig = px.sunburst(
total_raw_df,
path=['sex', 'survived'],
# names='sex',
labels=[{'0': 'Deceased', '1': 'Survived'}],
color=total_raw_df['sex'],
color_discrete_sequence=color_discrete_sequence
)
fig.update_traces(
textinfo="label+percent parent",
insidetextorientation='horizontal'
)
fig.update_layout(
font=dict(size=18)
)
fig.show()
Run Code Online (Sandbox Code Playgroud)
该数据集是经典的泰坦尼克号数据集,仅供参考,这些是数据框列:
Index(['pclass', 'survived', 'name', 'sex', 'age', 'sibsp', 'parch', 'ticket',
'fare', 'cabin', 'embarked', 'boat', 'body', 'home.dest'],
dtype='object')
Run Code Online (Sandbox Code Playgroud)
由于我们无法准备与问题相同的数据,因此我们转用seaborn数据集来解决该问题。颜色对应关系令人困惑,但可以通过更新与标签一对一关系的颜色来实现。fig.data您可以使用查看图形结构来检查标签。
import seaborn as sns
df = sns.load_dataset('titanic')
import plotly.express as px
color_discrete_sequence = ['#8B25BE', '#2D9157', '#2D5F91', '#97909A']
fig = px.sunburst(
df,
path=['sex', 'survived'],
# names='sex',
labels=[{'0': 'Deceased', '1': 'Survived'}],
color=df['sex'],
color_discrete_sequence=color_discrete_sequence
)
fig.update_traces(
textinfo="label+percent parent",
insidetextorientation='horizontal'
)
fig.update_layout(
font=dict(size=18)
)
color_mapping = {'0': "#708090", '1': "#006400", 'female': "#c71585", 'male': "#0000cd"}
fig.update_traces(marker_colors=[color_mapping[cat] for cat in fig.data[-1].labels])
fig.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |