如何使 Python (scipy.stats) 中的直方图看起来和 R 一样好?
How to make histograms in Python (scipy.stats) look as good as R?
下图及其代码是在 R (source) 中生成的。如何使用 scipy.stats
在 Python 代码中复制直方图的这种质量?
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[=19= 还有其他绘图库]
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()
如果您希望 kde
是不同的颜色,您可以使用 seaborn
histplot
+ kdeplot
。关于您的评论以及将 kde 设为不同的颜色,我在 github 此处评论 someone had a similar question(我相信这是 2021 年执行此操作的最佳方式)。因此,我们可以使用更多代码来非常接近您使用 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()
下图及其代码是在 R (source) 中生成的。如何使用 scipy.stats
在 Python 代码中复制直方图的这种质量?
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[=19= 还有其他绘图库]
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()
如果您希望 kde
是不同的颜色,您可以使用 seaborn
histplot
+ kdeplot
。关于您的评论以及将 kde 设为不同的颜色,我在 github 此处评论 someone had a similar question(我相信这是 2021 年执行此操作的最佳方式)。因此,我们可以使用更多代码来非常接近您使用 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()