man*_*oth 40 python logarithm matplotlib histogram
我正在尝试创建数据列的直方图并以对数方式绘制(y-axis)并且我不确定为什么以下代码不起作用:
import numpy as np
import matplotlib.pyplot as plt
data = np.loadtxt('foo.bar')
fig = plt.figure()
ax = fig.add_subplot(111)
plt.hist(data, bins=(23.0, 23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0))
ax.set_xlim(23.5, 28)
ax.set_ylim(0, 30)
ax.grid(True)
plt.yscale('log')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我也试过,而不是plt.yscale('log')添加Log=true在plt.hist行,我也尝试过ax.set_yscale('log'),但似乎没有任何工作.我得到一个空图,要么y-axis是对数(代码如上所示),但没有绘制数据(没有箱子).
tac*_*ell 83
尝试
plt.yscale('log', nonposy='clip')
Run Code Online (Sandbox Code Playgroud)
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.yscale
问题是条形图的底部是y = 0,默认是log(0)在进行日志转换时屏蔽无效点(- >未定义)(有讨论改变这个,但我不记得哪个方向它去了)所以当它试图为你的条形图绘制矩形时,底边被遮盖 - >没有矩形.
小智 7
hist 构造函数接受log参数。
你可以这样做:
plt.hist(data, bins=bins, log=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60997 次 |
| 最近记录: |