2016-11-11 9 views
0

statsmodels.graphics.mosaicplot.mosaic()で空のセルをキャストするモザイクプロットを作成したいとします。セルはそのサイズにかかわらず作成されるため、結果のプロットは醜いものに見えます。空の値を持つstatsmodelsのモザイクプロット

import matplotlib.pyplot as plt 

import pandas as pd 
from statsmodels.graphics.mosaicplot import mosaic 

df = pd.DataFrame({'size' : ['small', 'large', 'large'], 
        'length' : ['long', 'short', 'long']}) 

print(df) # note that the 'short'-'small' combination is missing 

fig = plt.figure() 
ax = fig.add_subplot(111) 
mosaic(df, ax=ax) 

は「短い小さな」値のために空のセルをプロットを作成します:例

enter image description here

は、このセルのかに作成を回避するためのいずれかの方法はあります後でそれをプロットから削除しますか?

+0

あなたが正確に何をしたいですか?私は予想される空のセルは見ません。では、ここで間違っているのは何ですか?その画像はまた、超小型であり、そのサイズが与えられていると読みにくい。 – sascha

+0

編集していただきありがとうございます。今私はあなたが何を意味するかを見ます。あなたはニッキーの答えを求めていますか? (このコードはdict-iterationに関してpython3で調整されていることを覚えておいてください) – sascha

+0

@sascha:便宜上、私は画像を(中から大に)拡大しました。 aの赤いブロックとcの緑のブロックの間に、中央にcを持つ太い白いストライプがあります。それは空のセルです。太い白い縞は、細胞周辺のマージンによるものです。 – MERose

答えて

1

は、その値が0でラベルを除外するために無名関数を送る:

labels = lambda k: "\n".join(k) if df[k] != 0 else "" 
mosaic(df, ax=ax, labelizer=labels) 
+0

私は最後に 'KeyError:( 'small'、 'long')'という長いトレースバックを取得します。 '' df.get(k、0) 'の代わりに' 'ValueError:有限個の数値のみをPDFで出力できる」というトレースバックを追加しました。 – MERose

+0

私はちょうどラムダ_を使用しました: "" –

関連する問題