matplotlib 如何在Python中创建日志日志直方图

fcwjkofz  于 2023-05-07  发布在  Python
关注(0)|答案(2)|浏览(144)

给定一个值数组,我想根据这些值的计数绘制一个log log直方图。我只知道如何记录x值,但不知道y值,因为它们不是在我的程序中显式创建的。

huus2vyu

huus2vyu1#

查看pyplot文档。

  • hist可以使用关键字参数log=True为您“记录”y轴
  • hist接受bins关键字参数,但是您必须自己“记录”x轴

例如:

#!/usr/bin/python
import numpy
from matplotlib import pyplot as plt

data = numpy.random.gumbel(2 ** 20, 2 ** 19, (1000, ))

bins = range(15, 25)
plt.xticks(bins, ["2^%s" % i for i in bins])
plt.hist(numpy.log2(data), log=True, bins=bins)
plt.show()

这将为您提供每个bin中有多少元素的实际计数,绘制在对数轴上(这就是人们通常所说的对数图)。从你的措辞中,我无法判断你是想要这个,还是想要在线性轴上绘制的计数的对数。
顺便说一句,垃圾箱甚至不必均匀间隔。

laawzig2

laawzig22#

基于this solution,我们可以定义这个简单的方法:

import numpy as np
import matplotlib.pyplot as plt

def plot_loghist(x, bins):
  hist, bins = np.histogram(x, bins=bins)
  logbins = np.logspace(np.log10(bins[0]),np.log10(bins[-1]),len(bins))
  plt.hist(x, bins=logbins)
  plt.xscale('log')
  plt.yscale('log')

在那通电话之后

plot_loghist(data, 10)

这是我的数据的输出示例:

相关问题