首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matplotlib中绘制日志直方图

如何在matplotlib中绘制日志直方图
EN

Stack Overflow用户
提问于 2021-11-23 22:07:00
回答 1查看 220关注 0票数 1

我想知道如何绘制日志图来可视化列表中元素的频率,例如:

代码语言:javascript
复制
my_list=[1,2,3,3,3,4,1,2,5,2,10,4,5,3,3,3,2,1]

我用直方图绘制数据:

代码语言:javascript
复制
plt.hist(my_list, label='Frequency Distribution of matches')
plt.legend()
plt.ylabel('Frequency')

但是把它想象成日志会更好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-23 23:37:23

plt.hist包括一个log参数,它的行为类似于plt.yscale('log'),因为它只缩放y轴:

log:如果是True,则直方图轴将设置为日志比例尺。

若要缩放x轴,请将其与plt.xscale('log')相结合。

代码语言:javascript
复制
plt.hist(my_list, log=True)
plt.xscale('log')

如果想要等宽的条形图,请将bins定义为10 ** edges

代码语言:javascript
复制
start, stop = np.log10(min(my_list)), np.log10(max(my_list))
bins = 10 ** np.linspace(start, stop, 10)

plt.hist(my_list, log=True, bins=bins)
ax.set_xscale('log')

若要获取频率的日志记录线图,请使用plt.stairs (需要matplotlib 3.4+)和np.histogram

代码语言:javascript
复制
plt.stairs(*np.histogram(my_list))
plt.yscale('log')
plt.xscale('log')

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

https://stackoverflow.com/questions/70088437

复制
相关文章

相似问题

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