python - python中的对数y轴箱

标签 python matplotlib histogram logarithm

我正在尝试创建数据列的直方图并以对数方式(y 轴)绘制它,但我不确定为什么以下代码不起作用:

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()

我也尝试过在 plt.hist 行中添加 Log=true 而不是 plt.yscale('log')我也尝试了 ax.set_yscale('log'),但似乎没有任何效果。我要么得到一个空图,要么 y-axis 确实是对数的(代码如上所示),但没有绘制数据(没有 bin)。

最佳答案

试试

plt.yscale('log', nonposy='clip')

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.yscale

问题在于条形底部位于 y=0 处,默认值是在进行对数转换时屏蔽无效点(log(0) -> undefined)(那里正在讨论改变这一点,但我不记得它是怎么走的)所以当它试图为你的条形图绘制矩形时,底边被遮住了 -> 没有矩形。

关于python - python中的对数y轴箱,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17952279/

相关文章:

Python - Flask 不存储 session

python - 在 for 循环中调整 matplotlib 散点图大小

python - 以对数刻度绘制 x 和 y 轴

java - 如何在不导入任何 java 库的情况下使直方图更加 OOPy?

python - Spotify - 删除使用 None 值创建的访问 token

python - 使用正则表达式提取复杂文本 Python

python - 如何提取字符串中的第一个数字 - Python

pandas - matplotlib.axis.axes mplfinance 体积误差

gnuplot - 在 GNUPLOT 中为不同类别绘制具有指定模式的直方图

python - 使用 matplotlib 在一个图中绘制多个直方图