我如何在它所选择的海洋分布图图中添加一条垂直线?

时间:2019-06-14 15:04:57

标签: python matplotlib plot seaborn

如何在x位置上添加一条垂直线,其中y在海洋分布图中最大?

a[which(lapply(a, length) == 2)] <- NULL

PS_在上面的示例中,我们知道它可能会在import seaborn as sns, numpy as np sns.set(); np.random.seed(0) x = np.random.randn(5000) ax = sns.distplot(x, kde = False) 处选择。我很想知道对于x的任何给定分布,我通常如何找到该值。

1 个答案:

答案 0 :(得分:1)

这是获得更准确分数的一种方法。首先获得平滑分布函数,使用它提取最大值,然后将其删除。

import seaborn as sns, numpy as np
import matplotlib.pyplot as plt
sns.set(); np.random.seed(0)
x = np.random.randn(5000)
ax = sns.distplot(x, kde = True)

x = ax.lines[0].get_xdata()
y = ax.lines[0].get_ydata()
plt.axvline(x[np.argmax(y)], color='red')
ax.lines[0].remove()

enter image description here

编辑,无需使用kde=True

的替代解决方案
import seaborn as sns, numpy as np
from scipy import stats
import matplotlib.pyplot as plt

sns.set(); np.random.seed(0)
x = np.random.randn(5000)
ax = sns.distplot(x, kde = False)

kde = stats.gaussian_kde(x) # Compute the Gaussian KDE
idx = np.argmax(kde.pdf(x)) # Get the index of the maximum
plt.axvline(x[idx], color='red') # Plot a vertical line at corresponding x

这是实际分布而不是密度值

enter image description here