Matplotlib 只得到最后一个情节

Matplotlib 只得到最后一个情节,matplotlib,seaborn,Matplotlib,Seaborn,当用下面的代码绘图时,我得到的是c、d、e绘图,但我只得到plt的最后一个绘图 def normalize(x): return (x - x.min(0)) / x.ptp(0) c=sns.distplot(mk[0]['mass'], hist=True, label='p', rug=True) d=sns.distplot(mk[1]['mass'], hist=True, label='q', rug=True) e=sns.distplot(mk[2]['mass'], h

当用下面的代码绘图时,我得到的是c、d、e绘图,但我只得到plt的最后一个绘图

def normalize(x):
    return (x - x.min(0)) / x.ptp(0)
c=sns.distplot(mk[0]['mass'], hist=True, label='p', rug=True)
d=sns.distplot(mk[1]['mass'], hist=True, label='q', rug=True)
e=sns.distplot(mk[2]['mass'], hist=True, label='r', rug=True)
datadist=[c,d,e]
xd=dict()
yd2=dict()
for i in datadist:
    line = i.get_lines()[0]
    xd[i] = line.get_xdata()
    yd = line.get_ydata()   
    yd2[i] = normalize(yd)
plt.plot(xd[c], yd2[c],color='black')
plt.plot(xd[d], yd2[d],color='yellow')
plt.plot(xd[e], yd2[e],color='green')
sns.distplot()
返回绘制直方图的
ax
(子图)。所有3个都在同一子批次上绘制,因此返回值三次相同

数组
lines=ax1.get_lines()
正好包含3个元素:每个kde曲线一个元素,因此可以按如下方式提取它们:

将numpy导入为np
将matplotlib.pyplot作为plt导入
导入seaborn作为sns
def正常化(x):
返回(x-x.min(0))/x.ptp(0)
图(ax1,ax2)=plt.子批次(ncols=2,figsize=(14,4))
sns.distplot(np.random.randn(30)+10,hist=True,label='p',rug=True,ax=ax1,color='black')
sns.distplot(np.random.randn(30)+15,hist=True,label='q',rug=True,ax=ax1,color='gold')
sns.distplot(np.random.randn(30)+20,hist=True,label='r',rug=True,ax=ax1,color='green')
对于ax1中的行。获取_行():
ax2.plot(line.get_xdata()、normalize(line.get_ydata())、color=line.get_color())
plt.show()

现在,如果您只需要kde曲线并对其进行“规格化”,您可以使用
scipy.stats import\u kde

将numpy导入为np
将matplotlib.pyplot作为plt导入
从scipy.stats导入高斯_kde
def正常化(x):
返回(x-x.min(0))/x.ptp(0)
图,ax=plt.子批次(图尺寸=(12,4))
mk0mass=np.random.randn(30)+10
mk1mass=np.random.randn(30)+15
mk2mass=np.random.randn(30)+20
所有质量=[mk0质量,mk1质量,mk2质量]
x=np.linspace(min([mki.min()表示所有质量中的mki])-2,
最大值([mki.max()表示所有质量中的mki])+2100)
对于mki,拉链中的颜色(全部为黑色、金色、绿色):
kde=高斯分布(mki)
yd=标准化(kde(x))
ax.绘图(x,yd,颜色=颜色)
(x,0,yd,color=color,alpha=0.3)之间的最大填充量
plt.show()

这是否回答了您的问题?我已经展示了规范化函数是如何定义的。我想在一个图形中绘制最后的三线图。@JohanCYea在一个单独的图中,我想显示plt.plt(xd[c],yd2[c],color='black')plt.plt(xd[d],yd2[d],color='yellow')plt.plt(xd[e],yd2[e],color='green'))我不需要c,d,e@JohanC的图