首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用正常曲线绘制直方图,命名海运箱。

用正常曲线绘制直方图,命名海运箱。
EN

Stack Overflow用户
提问于 2017-02-27 13:39:07
回答 1查看 4.2K关注 0票数 1

大家好,我试图用一个不同的数据集使用海运绘制以下类型的绘图。问题是,当使用直方图类型时,即使它提供了内核曲线,我也不能命名回收箱(如2-2.5、2.5-3.等等)。条形图没有像画中那样绘制正常曲线的功能。这张图片似乎是用SPSS统计软件包,我对此知之甚少。

下面是我能得到的最接近的东西(我已经附加了代码)

代码语言:javascript
复制
df = pd.DataFrame({'cat': ['1-1.5', '1.5-2', '2-2.5','2.5-3','3-3.5','3.5-4','4-4.5','4.5-5'],'val': [0,0,1,7,7,33,17,10]})
ax = sns.barplot(y = 'val', x = 'cat', 
              data = df)
ax.set(xlabel='Categories', ylabel='Frequency')
plt.show()

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 14:26:29

所以问题当然是你没有原始数据,而是已经被绑定的数据。我们可以逆转这个绑定,并从一个原始数据数组开始。然后再次执行直方图,并使用sns.distplot,默认情况下,它也显示KDE图。

代码语言:javascript
复制
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

cat = ['1-1.5', '1.5-2', '2-2.5','2.5-3','3-3.5','3.5-4','4-4.5','4.5-5']
val = [0,0,1,7,7,33,17,10]
data = []
for i in range(len(cat)):
    data.extend([1.25+i*0.5]*val[i])
bins = np.arange(1,5.5, 0.5)

ax = sns.distplot(data, bins=bins, hist_kws= dict(edgecolor="k"))
ax.set(xlabel='Categories', ylabel='Frequency')
ax.set_xticks(bins[:-1]+0.25)
ax.set_xticklabels(cat)

plt.show()

使用KDE函数的bw关键字参数来设置曲线的光滑性。例如,sns.distplot(data, bins=bins, kde_kws=dict(bw=0.5), hist_kws= dict(edgecolor="k"))bw=0.5生产的

还可以尝试使用bw=0.1bw=0.25bw=0.35bw=2来查看不同之处。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42487220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档