Python pyplot直方图0条出现
我正在尝试为我拥有的一些数据制作一个柱状图,出于某种原因,柱状图也一直显示第0栏(在我的例子中是空的) 这是我的密码Python pyplot直方图0条出现,python,matplotlib,histogram,Python,Matplotlib,Histogram,我正在尝试为我拥有的一些数据制作一个柱状图,出于某种原因,柱状图也一直显示第0栏(在我的例子中是空的) 这是我的密码 number_of_bins = 12 japanQuakes = pd.read_csv('JapanQuakes.csv', header=None).as_matrix()[1:,1].astype(np.int) japanQuakes_histogram = plt.hist(japanQuakes, number_of_bins) japanQuakes_histo
number_of_bins = 12
japanQuakes = pd.read_csv('JapanQuakes.csv', header=None).as_matrix()[1:,1].astype(np.int)
japanQuakes_histogram = plt.hist(japanQuakes, number_of_bins)
japanQuakes_histogram[0]
请注意,日本地震包含从1到12的数字
这是我得到的柱状图
所以我想找到一种方法,让条形图填满整个图形,x轴从1开始,而不是从0开始
为了解决这个问题,我尝试了以下方法
A = np.array([1,2,3,4,5,6,7,8,9,10,11,12])
japanQuakes_histogram = plt.hist(japanQuakes, A)
但通过这样做,似乎最后两个小节被叠加在一起,我得到的是11个小节,而不是12个小节
还有一种方法可以使x轴编号显示在每个条下吗?试试下面的方法怎么样
plt.axis([1,12,0,3000])
A = np.arange(1,14)
japanQuakes_histogram = plt.hist(japanQuakes, A)
对于微调,您始终可以更改参数
bin
,但是对于轴,可以通过axis
来更改,如何尝试以下操作
plt.axis([1,12,0,3000])
A = np.arange(1,14)
japanQuakes_histogram = plt.hist(japanQuakes, A)
对于微调,您始终可以更改参数
bin
,但对于轴,可以通过axis
进行更改。首先,在大多数情况下,在没有任何进一步规范的情况下设置bin的数量将失败。在这里,您对箱子做了一些隐含的假设,即您希望有12个箱子,间距在1到13之间。(但努比怎么知道?!)
因此,最好考虑将存储箱放置在何处,并通过向存储箱提供一个数组来手动设置它们。此数组被解释为存储箱的限制,因此,例如,将存储箱设置为[6,8,11]
将生成两个存储箱,第一个存储箱的范围为6到8(不包括8.00),第二个存储箱的范围为8到11
在您的情况下,您需要12个存储箱,因此您需要将1到13之间的13个数字提供给存储箱
,这样1
值属于第一个存储箱,范围从1到2,12
属于最后一个从12到13的存储箱
这已经产生了一个很好的直方图,但是因为你只有整数,所以箱子的宽度有点违反直觉。因此,不是把BAR集中在bin的中间,而是想把它放在左边点,这可以通过<代码> Algun=“左边”< /> >来完成。
最后,您可以随意设置绘图的限制
import numpy as np
import matplotlib.pyplot as plt
# japanQuakes is the array [ 1 2 3 4 5 6 7 8 9 10 11 12]
japanQuakes = np.arange(1,13)
# if we want n bins, we need n+1 values in the array, since those are the limits
bins = np.arange(1,14)
japanQuakes_histogram, cbins, patches = plt.hist(japanQuakes, bins=bins, align="left")
# just to verify:
print japanQuakes_histogram
#[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
print cbins
#[ 1 2 3 4 5 6 7 8 9 10 11 12 13]
# indeed we have one value between 1 and 2, one value between 2 and 3 and so on
# set xticks to match with the left bin limits
plt.gca().set_xticks(bins[:-1])
# if you want some space around
plt.gca().set_xlim([bins[0]-1,bins[-1]])
# or if you want it tight
#plt.gca().set_xlim([bins[0]-0.5,bins[-1]-0.5])
plt.show()
首先,在大多数情况下,设置没有任何进一步规范的箱子数量将失败。在这里,您对箱子做了一些隐含的假设,即您希望有12个箱子,间距在1到13之间。(但努比怎么知道?!)
因此,最好考虑将存储箱放置在何处,并通过向存储箱提供一个数组来手动设置它们。此数组被解释为存储箱的限制,因此,例如,将存储箱设置为[6,8,11]
将生成两个存储箱,第一个存储箱的范围为6到8(不包括8.00),第二个存储箱的范围为8到11
在您的情况下,您需要12个存储箱,因此您需要将1到13之间的13个数字提供给存储箱
,这样1
值属于第一个存储箱,范围从1到2,12
属于最后一个从12到13的存储箱
这已经产生了一个很好的直方图,但是因为你只有整数,所以箱子的宽度有点违反直觉。因此,不是把BAR集中在bin的中间,而是想把它放在左边点,这可以通过<代码> Algun=“左边”< /> >来完成。
最后,您可以随意设置绘图的限制
import numpy as np
import matplotlib.pyplot as plt
# japanQuakes is the array [ 1 2 3 4 5 6 7 8 9 10 11 12]
japanQuakes = np.arange(1,13)
# if we want n bins, we need n+1 values in the array, since those are the limits
bins = np.arange(1,14)
japanQuakes_histogram, cbins, patches = plt.hist(japanQuakes, bins=bins, align="left")
# just to verify:
print japanQuakes_histogram
#[ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
print cbins
#[ 1 2 3 4 5 6 7 8 9 10 11 12 13]
# indeed we have one value between 1 and 2, one value between 2 and 3 and so on
# set xticks to match with the left bin limits
plt.gca().set_xticks(bins[:-1])
# if you want some space around
plt.gca().set_xlim([bins[0]-1,bins[-1]])
# or if you want it tight
#plt.gca().set_xlim([bins[0]-0.5,bins[-1]-0.5])
plt.show()
将存储箱设置为A=np.array(列表(范围(1,13))
(注意缺少括号)的问题是,它将生成11个存储箱。然而,提问者想要12个bin。将bin设置为A=np.array(列表(范围(1,13))
(注意缺少括号)的问题是,它将生成11个bin。然而,提问者想要12个垃圾箱。谢谢,这是有道理的。谢谢,这是有道理的。