2016-09-22 39 views
1

我正在使用以下代碼,嘗試將我的熊貓數據框df_in的每列的直方圖繪製爲大圖的子圖。熊貓直方圖:爲每個列繪製直方圖作爲大圖的子圖

%matplotlib notebook 
from itertools import combinations 
import matplotlib.pyplot as plt 

fig, axes = plt.subplots(len(df_in.columns) // 3, 3, figsize=(12, 48)) 
for x in df_in.columns: 
    df_in.hist(column = x, bins = 100) 

fig.tight_layout() 

但是,直方圖並未顯示在子圖中。任何人都知道我錯過了什麼?謝謝!

+1

據我所知,你需要指定''中df_in.hist ax'參數(.. 。,ax = your_ax)' – MaxU

回答

2

您需要指定要繪製的軸。這應該工作:

fig, axes = plt.subplots(len(df_in.columns)//3, 3, figsize=(12, 48)) 
for col, axis in zip(df_in.columns, axes): 
    df_in.hist(column = col, bins = 100, ax=axis) 
+0

我得到這個錯誤:ValueError:傳遞軸的數量必須是1,與輸出圖相同。我如何在這裏修復座標軸?謝謝 – Edamame

+0

我沒注意生成軸的那條直線。這裏可能有問題,根據你想要表現情節來改變它。這將例如並排顯示它們全部。 「fig,axes = plt.subplots(1,len(df_in.columns))」。讓我知道這個是否奏效。 – burhan

+1

我比Pascal的下面更喜歡這個答案,但是正如他所提到的那樣是一個錯誤。對我來說,axes.flatten()完成了這個訣竅 –

2

我不能評論burhan的答案,因爲我沒有足夠的聲望點。他的回答的問題是,axes不是一維的,它包含軸黑社會,所以它需要展開:

%matplotlib notebook 
from itertools import combinations 
import matplotlib.pyplot as plt 

fig, axes = plt.subplots(len(df_in.columns)//3, 3, figsize=(12, 48)) 

i = 0 
for triaxis in axes: 
    for axis in triaxis: 
     df_in.hist(column = df.columns[i], bins = 100, ax=axis) 
     i = i+1