以下图表及其代码是在 R 中生成的(来源)。如何使用 Python 代码复制直方图的这种品质scipy.stats?
scipy.stats
x = rgamma(1000, 3, .1) hist(x, prob=T, br=30, col="skyblue2", main="n = 1000: GAMMA(3, .1)") curve(dgamma(x, 3, .1), add=T, lwd=2, col="orange") abline(v = 55.81, lwd=2, col="blue") abline(v = 53.2232, lwd=2, col="brown", lty="dotted")
上面的 R 图比 Python 的scipy.stats直方图好很多,下面显示了一个例子,但我知道还有其他适用于 Python 的绘图库
from scipy.stats import dgamma r = dgamma.rvs(1.1, size=1000) ax.hist(r, density=True, histtype='stepfilled', alpha=0.2) ax.legend(loc='best', frameon=False) plt.show()
如果您希望是不同的颜色,可以使用seaborn histplot+ 。关于您的评论和将 kde 设置为不同的颜色,我在此 github 上评论过,那里有人有类似的问题(我相信这是 2021 年最好的方法)。因此,我们能够通过多一点代码非常接近您发布的内容。还有许多其他参数可以直接传递给和或者如果参数不存在,您可以使用例如添加内容或使用 将内容添加到轴。kdeplot``kde``R``sns.histplot``sns.kdeplot``plt``plt.title('Seaborn Histplot Example')``ax.
seaborn
histplot
kdeplot``kde``R``sns.histplot``sns.kdeplot``plt``plt.title('Seaborn Histplot Example')``ax.
from scipy.stats import dgamma import matplotlib.pyplot as plt import seaborn as sns r = dgamma.rvs(1.1, size=1000) sns.set_style("white") sns.set_context("talk") fig, ax = plt.subplots(figsize=(24,12)) sns.histplot(r, color='deepskyblue', stat='density') sns.kdeplot(r, color='orange') plt.title('Seaborn Histplot Example', size=24, fontweight='bold') sns.histplot(r, color='deepskyblue', stat='density', edgecolor="black") sns.kdeplot(r, color='orange') plt.axvline(2.8, 0, 0.95, color='blue') plt.axvline(2.4, 0, 0.95, color='brown', linestyle='--') ax.tick_params(left=True, bottom=True) plt.show()