我有一个Pandas DataFrame,它在Series中具有以下值
x = [2, 1, 76, 140, 286, 267, 60, 271, 5, 13, 9, 76, 77, 6, 2, 27, 22, 1, 12, 7, 19, 81, 11, 173, 13, 7, 16, 19, 23, 197, 167, 1]
字符串
我被指示用Python 3.6在Jupyter笔记本中绘制两个直方图。
x.plot.hist(bins=8)
plt.show()
型
我选择了8个箱子,因为这对我来说是最好的。我还被指示用x的对数绘制另一个直方图。
x.plot.hist(bins=8)
plt.xscale('log')
plt.show()
型
这个直方图看起来很可怕。我做错什么了吗?我试着摆弄了一下图,但我所做的一切似乎都让直方图看起来更糟。示例如下:
x.plot(kind='hist', logx=True)
型
除了将X的对数绘制成直方图外,我没有得到任何指示。
为了记录在案,我已经导入了pandas、numpy和matplotlib,并指定绘图应该是内联的。
5条答案
按热度按时间xmq68pz91#
在
hist
调用中指定bins=8
意味着最小值和最大值之间的范围被平均划分为8个bin。在线性尺度上相等的东西在对数尺度上是扭曲的。你可以做的是指定直方图的条柱,使它们在宽度上不相等,从而使它们在对数尺度上看起来相等。
字符串
的数据
kr98yfug2#
这里是另一个解决方案,不使用子图或在同一图像中绘制两个东西。
字符串
的数据
rdlzhqv93#
用x的对数绘制另一个直方图。
与在对数尺度上绘制x不同。画出x的对数是
字符串
的数据
不同之处在于x本身的值被转换为:我们在看它们的对数。
这与在对数标度上绘图不同,在对数标度上,我们保持x不变,但改变了水平轴的标记方式(向右挤压条,向左拉伸条)。
jei2mxaa4#
根据我的实验,
np.histogram
的使用可能是不必要的,因为x
的两端正好是最小值和最大值,不需要np.histogram
来计算:字符串
eimct9ow5#
Seaborn对于具有对数尺度的直方图也是一个很好的解决方案,而不必像使用matplotlib那样手动指定直方图bin边缘。
字符串