1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
問(wèn)題似乎是“case”和“class”列包含相同的信息,只是名稱不同。在 case 為 1 的任何地方,class 都是 Negative,反之亦然。
如果您同時(shí)使用x
and hue
,seaborn 將放置 4 列:
案例 1,“負(fù)面”類
案例 1,“綠色”類
案例 2,“負(fù)面”類
案例 2,“綠色”類
四列中的兩列保持空白:
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
df = pd.DataFrame({'case': np.concatenate([np.repeat([1], 3700), np.repeat([2], 1200)]),
'class': np.concatenate([np.repeat(['Negative'], 3700), np.repeat(['green'], 1200)])})
g = sns.catplot(x="case",
hue='class',
palette='Blues',
data=df,
kind="count")
plt.show()
在這種情況下,更合適的情節(jié)是省略hue并直接使用該類x:
g = sns.catplot(x='class',
palette='Blues',
data=df,
kind='count')
plt.show()
PS:要獲得與第一個(gè)情節(jié)相似的圖例,可以使用 xticks 和 xlabel。請(qǐng)注意,seaborncatplot旨在創(chuàng)建完整的子圖網(wǎng)格。g.axes[0][0]抓取ax第一個(gè)子圖的。
plt.legend(g.axes[0][0].patches,
[l.get_text() for l in g.axes[0][0].get_xticklabels()],
title= g.axes[0][0].get_xlabel())
g.axes[0][0].set_xticks([]) # remove the xticks (now in legend)
g.axes[0][0].set_xlabel('') # remove the xlabel (now title of legend)
添加回答
舉報(bào)