2017-07-05 26 views
1

ちょっと、次の問題があります。私はこのような配列があります。Matplotlib:Numpy配列の値の積算プロットを作成する方法

enter image description here

私の延期:

arr1= 
[[4 4 4] 
[4 4 6] 
[4 3 4] 
[4 4 7] 
[4 4 3] 
[4 4 1] 
[3 4 7] 
[4 3 7] 
[4 4 5] 
[4 3 6]] 

は、今私が積み上げ棒グラフ(ヒストグラム)を取得したいが、それはこのようなさまざまな要素の数を,,示しアプローチは、要素をbincountし、配列を埋めることでしたが、私は何をすべきか分かりません。ここ

arr2= 
    [[0 0 0] 
    [0 0 1] 
    [0 0 0] 
    [1 3 1] 
    [9 7 2] 
    [0 0 1] 
    [0 0 2] 
    [0 0 3]] 
+1

? – James

+0

@ヴァーラー:MWEを与えるのに常に役立ちます。こちらをご覧ください:https://stackoverflow.com/help/mcve –

答えて

2

出力

enter image description here

と同様にアルテア基づいて回答を追加同じ

import numpy as np 
import pandas as pd 
data = np.array([[4, 4, 4], 
[4, 4, 6], 
[4, 3, 4], 
[4, 4, 7], 
[4, 4, 3], 
[4, 4, 1], 
[3, 4, 7], 
[4, 3, 7], 
[4, 4, 5], 
[4, 3, 6]]) 

columns = ['Col1', 'Col2', 'Col3'] 
df = pd.DataFrame(data, columns=columns) 
out = {} 
for column in columns: 
    out[column] = pd.value_counts(df[column]) 

uniq_df = pd.DataFrame(out).fillna(0) 

uniq_df.T.plot(kind="bar", stacked=True) 
+0

また、 'import pandas as pd': – DavidG

+0

@DavidG:ありがとうございます。修正されました。 –

+0

ありがとうございました!!!! – Varlor

1

を生成するためのコードです。あなたがこれまでに試してみました何のコード

import numpy as np 
import pandas as pd 
from altair import * 
data = np.array([[4, 4, 4], 
[4, 4, 6], 
[4, 3, 4], 
[4, 4, 7], 
[4, 4, 3], 
[4, 4, 1], 
[3, 4, 7], 
[4, 3, 7], 
[4, 4, 5], 
[4, 3, 6]]) 

columns = ['Col1', 'Col2', 'Col3'] 
df = pd.DataFrame(data, columns=columns) 
df = df.T.stack().reset_index(level=[0,1]) 
df.columns = ['Col','RowNum','Value'] 
Chart(df).mark_bar().encode(y='count(*)', x='Col:N', color='Value:N') 

enter image description here

+0

このaltairベースの手法のバーをもっと広くすることはできませんか? :) – Varlor

+0

また、あなたのコードの最後の行の "Chart"は定義されておらず、パンダのモジュールではないと言います – Varlor

+0

これはaltairのものです。あなたはaltairをインストールしてから次のことを行う必要があります:altair import * –

関連する問題