Python pyplot 直方图:调整 bin 宽度,而不是 bin 数量
Python pyplot histogram: Adjusting bin width, Not number of bins
我已经能够为自己制作一个漂亮的小直方图,如下所示:
我能够使用以下代码生成图像:
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6000, 0, 45000])
data['column'][data.value == 0].hist(bins=200, label='A')
data['column2'][data.value == 1].hist(bins=200, label='B')
plt.title('A Histogram')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.legend()
return plt
一切都很好,但箱子的长度不等。我能够获得等长垃圾箱的唯一方法是做这样的事情:
bins=[0,100,200,300,400,.......)
这一点都不漂亮。
我在谷歌上搜索了一下,四处看看。类似问题的最流行答案是 this guy,它提出了一个看似出色的答案,但我无法为我的生活工作。
感谢您的帮助!
我对你的数据结构和你调用函数的方式有点困惑hist
。但是,我假设您使用的是 matplotib,因此您需要为 hist
函数定义相同的分箱范围。如果您传递一个带有 bin 边界的数组,而不是您想要的 bin 数量,效果会更好。
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6000, 0, 45000])
# From your example I am assuming that the maximum value is 6000
binBoundaries = np.linspace(0,6000,201)
data['column'][data.value == 0].hist(bins=binBoundaries, label='A')
data['column2'][data.value == 1].hist(bins=binBoundaries, label='B')
plt.title('A Histogram')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.legend()
这应该适合你。
如果有帮助请告诉我。
我已经能够为自己制作一个漂亮的小直方图,如下所示:
我能够使用以下代码生成图像:
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6000, 0, 45000])
data['column'][data.value == 0].hist(bins=200, label='A')
data['column2'][data.value == 1].hist(bins=200, label='B')
plt.title('A Histogram')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.legend()
return plt
一切都很好,但箱子的长度不等。我能够获得等长垃圾箱的唯一方法是做这样的事情:
bins=[0,100,200,300,400,.......)
这一点都不漂亮。
我在谷歌上搜索了一下,四处看看。类似问题的最流行答案是 this guy,它提出了一个看似出色的答案,但我无法为我的生活工作。
感谢您的帮助!
我对你的数据结构和你调用函数的方式有点困惑hist
。但是,我假设您使用的是 matplotib,因此您需要为 hist
函数定义相同的分箱范围。如果您传递一个带有 bin 边界的数组,而不是您想要的 bin 数量,效果会更好。
import numpy as np
import matplotlib.pyplot as plt
plt.figure()
plt.axis([0, 6000, 0, 45000])
# From your example I am assuming that the maximum value is 6000
binBoundaries = np.linspace(0,6000,201)
data['column'][data.value == 0].hist(bins=binBoundaries, label='A')
data['column2'][data.value == 1].hist(bins=binBoundaries, label='B')
plt.title('A Histogram')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.legend()
这应该适合你。
如果有帮助请告诉我。