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 = True
是seaborn.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'])
输出:
我在使用 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 = True
是seaborn.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'])
输出: