记录直方图中的计数值,而不是轴本身

时间:2014-05-23 21:26:06

标签: python matplotlib histogram

我做了这个例子来展示我想要做的事情:

data = np.random.normal(loc=1000,scale=20,size=2000)
plt.hist(np.log10(data),log=True)
plt.xlabel('Log(data)')
plt.ylabel('Count')
plt.show()

执行此命令后,我得到一个漂亮的直方图,其中x轴为Log(数据),y轴为Counts(y轴为对数缩放)。出于某种原因,我希望在y尺度上记录(计数),我的意思不是记录的轴,而是记录自己的值。因此,如Log(数据)Vs Log(计数)和轴本身不应该被记录。谢谢您的帮助。 In above fig, I don't want logged y-axis but the values themselves to be logged if that can be done

1 个答案:

答案 0 :(得分:2)

我不确定你是否可以使用hist()函数本身,但你可以用条形图轻松地重新创建它。

import numpy as np
import matplotlib.pyplot as plt

data = np.random.normal(loc=1000,scale=20,size=2000)
n, bins, patches = plt.hist(np.log10(data),log=True)

# Extract the midpoints and widths of each bin.
bin_starts = bins[0:bins.size-1]
bin_widths = bins[1:bins.size] - bins[0:bins.size-1]

# Clear the histogram plot and replace it with a bar plot.
plt.clf()
plt.bar(bin_starts,np.log10(n),bin_widths)
plt.xlabel('Log(data)')
plt.ylabel('Log(Counts)')
plt.show()

Bar Chart