我用matplotlib制作密度图,我也希望在它下面得到地毯图。制作密度图的好例子是How to create a density plot in matplotlib?
但我找不到地毯情节的好例子。在R中,它可以通过rug(数据)轻松完成。
答案 0 :(得分:7)
您可以在每个数据点绘制标记。
from scipy import stats
import numpy as np
import matplotlib.pyplot as plt
sample = np.hstack((np.random.randn(30), np.random.randn(20)+5))
density = stats.kde.gaussian_kde(sample)
fig, ax = plt.subplots(figsize=(8,4))
x = np.arange(-6,12,0.1)
ax.plot(x, density(x))
ax.plot(sample, [0.01]*len(sample), '|', color='k')
答案 1 :(得分:3)
你也可以使用Seaborn.distplot,它完全包裹直方图,KDE和地毯。 Seaborn制作的数字默认更漂亮。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sample = np.hstack((np.random.randn(30), np.random.randn(20)+5))
fig, ax = plt.subplots(figsize=(8,4))
sns.distplot(sample, rug=True, hist=False, rug_kws={"color": "g"},
kde_kws={"color": "k", "lw": 3})
plt.show()
答案 2 :(得分:2)
您可以找到示例here!
ax = fig.add_subplot(111)
ax.plot(x1, np.zeros(x1.shape), 'b+', ms=20) # rug plot
x_eval = np.linspace(-10, 10, num=200)
ax.plot(x_eval, kde1(x_eval), 'k-', label="Scott's Rule")
ax.plot(x_eval, kde1(x_eval), 'r-', label="Silverman's Rule")
似乎是它的核心!