seaborn:将图例添加到 CDF 图

seaborn: Add legend to CDF plot

我在使用 seaborn 向 CDF 图添加图例时遇到了一些困难。

MWE:

import numpy as np
import matplotlib.plyplot as plt
import seaborn as sns

X = np.random.randn(20,1,10,4)
k = X[:,0,:,0].reshape(-1)
l  = X[:,0,:,1].reshape(-1)
m  = X[:,0,:,2].reshape(-1)
n  = X[:,0,:,3].reshape(-1)

plt.figure()
plt.title('Some Distribution ')
plt.ylabel('CDF')
plt.xlabel('x-labelled)')
sns.kdeplot(k,cumulative=True, legend=True)
sns.kdeplot(l,cumulative=True, legend=True)
sns.kdeplot(m,cumulative=True, legend=True)
sns.kdeplot(n,cumulative=True, legend=True)
plt.show()

另外:

plt.figure()
plt.title('Some Distribution ')
plt.ylabel('CDF')
plt.xlabel('x-labelled)')
sns.kdeplot(k,cumulative=True)
sns.kdeplot(l,cumulative=True)
sns.kdeplot(m,cumulative=True)
sns.kdeplot(n,cumulative=True)
plt.legend(labels=['legend1', 'legend2', 'legend3', 'legend4'])
plt.show()

legend = Trueseaborn.kdeplot中的默认值,所以你不需要指定它。但是,您需要指定的是标签。

sns.kdeplot(k,cumulative=True, label = 'a')
sns.kdeplot(l,cumulative=True, label = 'b')
sns.kdeplot(m,cumulative=True, label = 'c')
sns.kdeplot(n,cumulative=True, label = 'd')

输出:

即使在您的第二个示例中,使用 plt.legend(labels=['legend1', 'legend2', 'legend3', 'legend4']),您也需要首先在 seaborn.kdeplot() 中指定标签。如果你在 plt.legend() 中传递不同的标签,传递给 searbon.kdeplot() 的标签将被替换,但如果没有标签传递给 seaborn,我得到与你相同的输出(即根本没有图例)。

示例:

sns.kdeplot(k,cumulative=True, label = 'a')
sns.kdeplot(l,cumulative=True, label = 'b')
sns.kdeplot(m,cumulative=True, label = 'c')
sns.kdeplot(n,cumulative=True, label = 'd')
plt.legend(labels = ['1','2','3','4'])

输出: