Matplotlib.hist使用阶跃直方图平滑点之间的直线

2024-09-28 22:02:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力使各点之间的界限平滑。增加垃圾箱的数量是一种方法,但根据我的实际数据,这仍然不能解决问题

def plotstep_test(x, y, z):

    plt.figure(figsize=[10, 6])
    plt.hist([x, y, z], color=['red','black', 'green'], histtype='step', bins=20)

    plt.gca().spines['right'].set_color('none')
    plt.gca().spines['top'].set_color('none')

    plt.title('', fontsize=14)
    plt.xlabel('', fontsize=14, labelpad=5)
    plt.ylabel('', fontsize=14, labelpad=5)


    plt.xticks(np.arange(0, 1.1, step=0.1), fontsize=12)    
    plt.yticks(fontsize=12)
    plt.tick_params(axis='both', which='both', left=True, bottom=True,labelbottom=True) 


    plt.show()

随机数:

plotstep_test(np.random.uniform(size=10), np.random.uniform(size=5), np.random.uniform(size=50))

enter image description here


Tags: testnonetruesizestepnppltrandom
2条回答

感谢@kwinkunks提到seaborn

import seaborn as sns

plt.figure(figsize=(10, 6))

plt.gca().spines['right'].set_color('none')
plt.gca().spines['top'].set_color('none')

plt.ylabel('Density', fontsize=14, labelpad=7.5)
plt.xticks(fontsize=14) 
plt.yticks(fontsize=14)

sns.distplot(np.random.uniform(size=50), hist=False, color='grey', axlabel=False, kde_kws={"linewidth": 4})
sns.distplot(np.random.uniform(size=25), hist=False, color='cornflowerblue', axlabel=False, kde_kws={"linewidth": 4})
sns.distplot(np.random.uniform(size=200), hist=False, color='goldenrod', axlabel=False, kde_kws={"linewidth": 4})

enter image description here

听起来你可能更喜欢kernel density estimation而不是直方图。然后您就可以完全控制估计的平滑度

试试^{}

data = np.random.normal(size=100)
import seaborn as sns
sns.distplot(data)

这将为您提供:

distplot example

如果你喜欢这条线的外观,你可以让你的其他东西工作没有问题,我相信

一般来说,seaborn可以制作非常好的统计图Check out the gallery.

相关问题 更多 >