在matplotlib中使用以2为底的对数y轴的直方图?

3

有没有办法做到这一点?当我尝试指定basebasey时,hist命令似乎无法识别它。


你能发一下你已经尝试过的吗? - timss
1个回答

9
注意:以下解决方案适用于matplotlib版本<1.3.1。
使用方法:
ax.set_yscale('log', basey=2)

import numpy as np
import matplotlib.pyplot as plt
mu, sigma = 100, 15
fig, ax = plt.subplots()
x = mu + sigma * np.random.randn(10000)
ax.set_yscale('log', basey=2)
n, bins, histpatches = ax.hist(x, 50, facecolor='green', alpha=0.75)
plt.show()

enter image description here


1
@twch:感谢您提出修改建议。在matplotlib版本1.3.1中似乎存在一个回归问题,导致只绘制了柱形图的顶部。不幸的是,我必须撤销您的编辑(使用log=True),因为它还将y轴比例尺更改为以10为底数的对数,而不是以2为底数,这是此SO帖子试图解决的主要问题。 - unutbu
1
请将此类问题报告为错误。 - tacaswell
1
似乎已经在主分支上修复了,很快就会成为1.4.0版本。 - tacaswell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接