【问题标题】:matplotlib bar plot for logarithmic y axis对数 y 轴的 matplotlib 条形图
【发布时间】:2015-05-27 09:27:07
【问题描述】:

我尝试为对数 y 轴制作条形图。不幸的是,如果我将 y 轴设置为对数,则不再有条形。我能做些什么来实现这一目标?是否可以在 bar-function 中设置参考点(默认似乎为零)?

我的代码是:

import matplotlib.pyplot as plt
import numpy as np


N=1000
sample=np.random.random_integers(1,10,N)
hist,bins=np.histogram(sample)


fig,ax=plt.subplots(figsize=(12,5),nrows=1,ncols=2,sharex=True,sharey=False)
ax[1].set_yscale("log")
ax[0].bar(bins[:-1],1.*hist/N,np.diff(bins))
ax[1].bar(bins[:-1],1.*hist/N,np.diff(bins))

plt.show()

输出:

如何在右侧面板中制作条形?

【问题讨论】:

    标签: python matplotlib plot axes


    【解决方案1】:

    尝试更新 maptlotlib。适用于我的版本 1.4.2。

    【讨论】:

    • hmm.. 我有 matplotlib 的 1.3.1 版本。实际上,我通过 ssh 连接在服务器上使用 python。恐怕我没有更新的权利。
    • 使用virtualenvpip install --user
    • 谢谢!但最终这奏效了:ax[1].bar(bins[:-1],1.*hist/N,np.diff(bins),log=True)
    • @Andy 很高兴您解决了您的问题!请发布该评论,作为将来可能遇到相同问题的人的答案。
    【解决方案2】:

    如果你有matplotlib的1.3.1版本,以下解决了我的问题:

    ax[1].bar(bins[:-1],1.*hist/N,np.diff(bins),log=True)
    

    【讨论】:

    • 您可能想添加一些解释来帮助人们理解为什么这是最好的解决方案或它是如何工作的等等,而不是只留下一行代码。