Python 如何将垂直线添加到seaborn dist绘图中,使其在其中进行拾取?[单个地块中的多个分布]

Python 如何将垂直线添加到seaborn dist绘图中,使其在其中进行拾取?[单个地块中的多个分布],python,matplotlib,plot,seaborn,Python,Matplotlib,Plot,Seaborn,使用这些答案,我可以根据需要生成dist图。然而,当我想将相同的解决方案应用于多个绘图时,它似乎无法按预期工作。我正在寻求建议的解决办法。以下是我试图做的: import seaborn as sns, numpy as np from scipy import stats import matplotlib.pyplot as plt plt.figure(figsize=(20,10)) sns.set(); np.random.seed(0) data01 = np.random.nor

使用这些答案,我可以根据需要生成dist图。然而,当我想将相同的解决方案应用于多个绘图时,它似乎无法按预期工作。我正在寻求建议的解决办法。以下是我试图做的:

import seaborn as sns, numpy as np
from scipy import stats
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))

sns.set(); np.random.seed(0)
data01 = np.random.normal(10, 5, 1000)
data02 = np.random.normal(20, 5, 1000)

ax1 = sns.distplot(data01, color = 'blue', kde = True)

x1 = ax1.lines[0].get_xdata()
y1 = ax1.lines[0].get_ydata()
plt.axvline(x1[np.argmax(y1)], color='blue')

ax2 = sns.distplot(data02, color = 'red', kde = True)

x2 = ax2.lines[0].get_xdata()
y2 = ax2.lines[0].get_ydata()
plt.axvline(x2[np.argmax(y2)], color='red')

plt.legend()
这是我得到的,这不是我所期望的(两条垂直线,每条一条):


您需要使用正确的索引:索引
0
用于蓝色kde,索引
1
用于蓝色垂直线,索引
2
用于红色kde

直观地说,正如名称所示,
ax2。lines
为您提供当前图形上所有线条的集合。当您第二次使用
kde=True
绘制
distplot
时,您已经有2条线条(先前的kde和垂直线条)因此,第二个kde的索引是
2
,因为在python中,索引从0开始。这是因为您使用的是同一个地物对象,因此从
ax1
绘制的艺术家也将转到
ax2
。相反,如果您有单独的子批次,那么您将使用相同的索引
0

ax1 = sns.distplot(data01, color = 'blue', kde = True)

x1 = ax1.lines[0].get_xdata()
y1 = ax1.lines[0].get_ydata()
plt.axvline(x1[np.argmax(y1)], color='blue')

ax2 = sns.distplot(data02, color = 'red', kde = True)

x2 = ax2.lines[2].get_xdata() # <--- Use correct index 2 here
y2 = ax2.lines[2].get_ydata() # <--- Use correct index 2 here
plt.axvline(x2[np.argmax(y2)], color='red')

plt.legend()
ax1=sns.distplot(data01,color='blue',kde=True)
x1=ax1。行[0]。获取扩展数据()
y1=ax1.行[0].获取数据()
plt.axvline(x1[np.argmax(y1)],颜色='blue')
ax2=sns.distplot(数据02,颜色='red',kde=True)
x2=ax2.行[2]。获取扩展数据()#