给定一个值数组,我想根据这些值的计数绘制一个log log直方图。我只知道如何记录x值,但不知道y值,因为它们不是在我的程序中显式创建的。
huus2vyu1#
查看pyplot文档。
bins
例如:
#!/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中有多少元素的实际计数,绘制在对数轴上(这就是人们通常所说的对数图)。从你的措辞中,我无法判断你是想要这个,还是想要在线性轴上绘制的计数的对数。顺便说一句,垃圾箱甚至不必均匀间隔。
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)
这是我的数据的输出示例:
2条答案
按热度按时间huus2vyu1#
查看pyplot文档。
bins
关键字参数,但是您必须自己“记录”x轴例如:
这将为您提供每个bin中有多少元素的实际计数,绘制在对数轴上(这就是人们通常所说的对数图)。从你的措辞中,我无法判断你是想要这个,还是想要在线性轴上绘制的计数的对数。
顺便说一句,垃圾箱甚至不必均匀间隔。
laawzig22#
基于this solution,我们可以定义这个简单的方法:
在那通电话之后
这是我的数据的输出示例: