2013-01-24 18 views
5

私は、次のコードをUSNGパンダ散乱行列を作成する:パンダ3x3のスキャッタ行列欠落ラベル

import numpy as np 
import pandas as pd 

a = np.random.normal(1, 3, 100) 
b = np.random.normal(3, 1, 100) 
c = np.random.normal(2, 2, 100) 

df = pd.DataFrame({'A':a,'B':b,'C':c}) 
pd.scatter_matrix(df, diagonal='kde') 

この結果、次のスキャッタマトリックス中: enter image description here

最初の行は何ytickを有していません3番目の列にはxtickラベルが付きません.3番目の項目 'C'にはラベルが付きません。

不足しているラベルでこのプロットを完成させるにはどうすればよいですか?

答えて

5

問題のサブプロットにアクセスし、そのような設定を変更します。

axes = pd.scatter_matrix(df, diagonal='kde') 
ax = axes[2, 2] # your bottom-right subplot 
ax.xaxis.set_visible(True) 
draw() 

scatter_matrix関数が下のリンクでどのようにラベリングされるかを調べることができます。このことを何度も繰り返し実行している場合は、コードをファイルにコピーし、独自のカスタムscatter_matrix関数を作成することを検討してください。

https://github.com/pydata/pandas/blob/master/pandas/tools/plotting.py#L160

編集は、拒否されたコメントに応じて:

明らかax[0, 0].xaxis.set_visible(True)をやって、このの拡張機能、および等々、動作しません。なんらかの理由で、scatter_matrixは軸を表示せずに軸[2、2]の目盛りとラベルを設定しているようですが、残りの目盛りとラベルは設定しません。ダニとラベルを他のサブプロットに表示する必要があると判断した場合は、上にリンクされたコードを詳しく調べる必要があります。それぞれ

if i == 0 
if i == n-1 
if j == 0 
if j == n-1 

は具体的にif文で条件を変更してください。私はそれをテストしていないが、私はそれがトリックを行うと思う。

+0

、感謝の一覧です。これは参考になります。 – ronnydw

1

私は、上記の誰もがグーグルのための非変更ソースコードのバージョンを返信できませんので、次のとおりです。

n = len(features) 

for x in range(n): 
    for y in range(n): 
     sax = axes[x, y] 
     if ((x%2)==0) and (y==0): 
      if not sax.get_ylabel(): 
       sax.set_ylabel(features[-1])  
      sax.yaxis.set_visible(True) 

     if (x==(n-1)) and ((y%2)==0): 
      sax.xaxis.set_visible(True) 

     if ((x%2)==1) and (y==(n-1)): 
      if not sax.get_ylabel(): 
       sax.set_ylabel(features[-1])  
      sax.yaxis.set_visible(True) 

     if (x==0) and ((y%2)==1): 
      sax.xaxis.set_visible(True) 

機能OK列名