2017-07-12 24 views
2

現在、私は1、0、-1の行列を持ちます。各行は人で、各列は投票した請求書です。各セルの1、0、-1は投票方法を示しています。2次元配列のヒストグラムを作成する

私が作成しようとしているヒストグラムには、Y票のx票数(x桁の1の行数)を持つ人の数が表示されます。 X軸上では、0〜Nの賛成投票がある。たとえば、30人が投票した場合、X軸の30ラベルの棒はY軸上で30点になります。ここで

は、私はすぐにMATLABで作られたこれらのヒストグラムのスクリーンショットです(私の経験はどのようなものである):histograms built in MatLab

私の質問は、簡単かつ効果的にPythonでこれを行う方法です。 Pythonの経験はほとんどありません。

コード私が持っている:得

def buildHistogram(matrix): 
    plt.hist(matrix, bins = 30) 
    plt.show() 

は:histograms built in Python

私は三つの異なるヒストグラムにこれらを分割する方法を教えてください。 3つの異なる配列を作る必要はありますか?

+0

ダをフィルタリングするためのパンダ自体を使用してみてくださいtsを使用して、その 'hist'組み込み関数を使用しています:' df [df.desired_column == 1] .hist(bins = 30) '、desired_columnのYes投票* –

+0

あなたは、引っ張られている? -1、1、0の長いテキストファイルです。 @MSeifert –

+0

@ViníciusAguiar私は列のリストを含めることができるかどうか知っていますか?私は一度に最初の10を過ぎてすべての列を見たいと思います。 –

答えて

2

私はそれを再現するために設定され、いくつかのランダムなデータを使用:

import numpy as np 
import matplotlib.pyplot as plt 
arr = np.random.randint(-1, 2, (200, 100)) 

そして、それだけで(軸ラベルとタイトルを無視して)います:

fig, (ax1, ax2, ax3) = plt.subplots(1, 3) 
ax1.hist(np.sum(arr==-1, axis=1), bins=30) # no 
ax2.hist(np.sum(arr==0, axis=1), bins=30) # nothing 
ax3.hist(np.sum(arr==1, axis=1), bins=30) # yes 

私を与える(あなたが欲しいものをおおよそであるべきです):

enter image description here

+0

"ランダムな"データがこのようなストライプグラフをどのように生成したのか不思議です。 –

+0

@DanielF私はこれらの「空の縞」が現実だとは思わない。それは値の範囲がビンの数よりも少なくなるかもしれない私のデータセットの問題です。たとえば、2番目のデータセットでは、範囲は〜23〜44であるため、21個の "ビン"と9個の "空のビン"があります。 – MSeifert

+0

ああ、もちろんです。それは理にかなっている。 –

関連する問題