【发布时间】:2020-02-17 15:00:19
【问题描述】:
我有一个包含三列 Features, CV-fold, Accuracy, Network 的数据框。我想为每个网络制作一个箱线图,按特征和轴的 CV 折叠分组(参见示例图片)。
df = pd.read_csv(path)
df['Features'] = df["Features"].astype('category')
ordered_features = sorted(df.Network.value_counts().index)
df = df.loc[df['Accuracy'] > 0.1]
df.Accuracy = df.Accuracy*100
#sns.color_palette("husl", len(df['CV-fold'].value_counts().index))
#sns.set_palette('husl', len(df['CV-fold'].value_counts().index))
g = sns.FacetGrid(df, row="Network", row_order=ordered_features,
height=3, aspect=3, legend_out=True, despine=False)
g.map(sns.boxplot, x="CV-fold", y="Accuracy", hue="Features", data=df, palette='muted').add_legend()
g.set_axis_labels("", "Accuracy (%)")
因为我有 8 个不同的网络,所以我不想将它们全部放在一列或一行中,而是格式化为网格(例如 2x4)。此外,即使sharex 未启用,x 轴也仅标记在最底部的图形处。
我该怎么做?
【问题讨论】:
标签: python python-3.x seaborn boxplot