小能豆

如何使 Python(scipy.stats)中的直方图看起来和 R 一样好?

py

以下图表及其代码是在 R 中生成的(来源)。如何使用 Python 代码复制直方图的这种品质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()

阅读 17

收藏
2024-12-31

共1个答案

小能豆

如果您希望是不同的颜色,可以使用seaborn histplot+ 。关于您的评论和将 kde 设置为不同的颜色,我在此 github 上评论过,那里有人有类似的问题(我相信这是 2021 年最好的方法)。因此,我们能够通过多一点代码非常接近您发布的内容。还有许多其他参数可以直接传递给和或者如果参数不存在,您可以使用例如添加内容或使用 将内容添加到轴。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()
2024-12-31