我有一个Pandas数据帧,其中包含6000到1到2500之间的值,我想创建一个显示预定x轴的图表,即[1,2,4,8,16,32,64,128,256,512,更多]和每个这些计数的一个标准,我一直在研究numpy.histogram,这个位不让我选择bin范围(它估计一个)同样适用于matplotlib。
我到目前为止尝试过的代码是,
plt.hist(df['cnt'],bins=[0,1,2,4,8,16,32,64,128,256,512])
plt.show()
np.histogram(df['cnt'])
绘制np数据,但我看起来并不像我想要的那样。
我希望我的问题有道理,否则我会尝试扩展。
EDIT 当我运行
plt.hist(df['cnt'],bins=[0,1,2,4,8,16,32,64,128,256,512])
plt.show()
我得到:
我想要的是什么:
使用数据分析直方图功能在Excel中制作第二个。我希望这可以更好地描述我想做的事情。
答案 0 :(得分:1)
我认为你想在xaxis上使用base-2对数刻度。
您可以通过设置ax.set_xscale('log', basex=2)
然后,您还需要调整刻度线位置和格式,您可以使用ax.xaxis.set_major_locator(ticker.FixedLocator(bins))
和ax.xaxis.set_major_formatter(ticker.ScalarFormatter()
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import numpy as np
fig, ax = plt.subplots(1)
# Some fake data
cnt = np.random.lognormal(0.5, 2.0, 6000)
# Define your bins
bins = [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]
# Plot the histogram
ax.hist(cnt, bins=bins)
# Set scale to base2 log
ax.set_xscale('log', basex=2)
# Set ticks and ticklabels using ticker
ax.xaxis.set_major_locator(ticker.FixedLocator(bins))
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())
plt.show()