2016-11-29 8 views
0

私はいくつかのデータのヒストグラムを作成しようとしていますが、何らかの理由でヒストグラムが0番目のバーも表示し続けています(私の場合は空です) ここですjapanQuakesは1から12Python pyplotヒストグラム0バーが表示されています

までの数字が含まれており、ここで私は

enter image description here

を取得するヒストグラムであることを私のコード

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] 

注意

だから私はバーが全体のグラフを記入し、X軸は、私は次のように

A = np.array([1,2,3,4,5,6,7,8,9,10,11,12]) 
japanQuakes_histogram = plt.hist(japanQuakes, A) 

問題を解決するために作ってみました1ではなく0

から始まるしかし、そのような方法を見つけたいですこれを行うことで、最後の2本のバーが積み重なって12本の代わりに11本のバーになります。

また、各バーの下にx軸番号を表示する方法はありますか?

答えて

2

まず、何も指定せずにビンの数を設定するとほとんどの場合失敗します。ここでは、ビンについて何らかの暗黙的な仮定をしています。すなわち、12ビンを1から13の間に等間隔で配置したいとします。配列をbinsに入力して手動で設定することができます。 [6,8,11]binsを設定すると、あなたの場合(8.00除く)6から8までの範囲の第8〜11

に第有する2つのビンを生成例えばように、この配列は、ビンの制限として解釈されます12ビンが必要なので、1〜13の13個の数値をbinsに入力する必要があります。値1が1から2の範囲の第1ビンに属し、12が12から13の範囲の最後のビンに属します。

これはすでに素晴らしいヒストグラムを生成しますが、整数値しかないので、ビン幅は直観に反するものです。だから、ビンをビンの中央に置くのではなく、それを左の点にセンタリングすることができます。これはalign="left"で行うことができます。

最後に、あなたが好きなようにプロットの限界を設定することができます。

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() 

enter image description here

+0

ありがとうございます。 – Saik

1

次のように試してみませんか?

plt.axis([1,12,0,3000]) 
A = np.arange(1,14) 
japanQuakes_histogram = plt.hist(japanQuakes, A) 

微調整のために、あなたは常にパラメータbinsを変更することができますが、車軸のためaxisにより変更することができます。

+0

'A = np.array(リスト(範囲(1,13)))'(心ブラケット欠落がある)としてビンを設定する問題は 'それが生成するということです11 'ビン。しかし、質問者は「12」ビンを求めている。 – ImportanceOfBeingErnest

+0

ありがとう、ImportanceOfBeingErnest!私はそれを訂正した。 –

関連する問題