python中的对数y轴箱

发布于 2021-01-29 19:01:41

我正在尝试创建数据列的直方图并以对数方式绘制(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()

我也试过,而不是plt.yscale('log')添加Log=trueplt.hist行以及我试过ax.set_yscale('log'),但似乎没有任何工作。我要么得到一个空图,要么y-axis确实是对数的(使用上面显示的代码),但是没有绘制任何数据(没有bin)。

关注者
0
被浏览
37
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    尝试

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

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

    问题在于小节的底部位于y =
    0,默认值是log(0)在进行对数转换时掩盖无效点(->未定义)(有讨论更改此点,但是我不记得是哪种方法)因此,当它尝试为您的条形图绘制矩形时,其底边被遮罩掉->没有矩形。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看