Rには、データセット内の変数間のペアワイズ接続のプロットのニース行列を提供する便利な関数pairs
があります。結果のプロットは、 このブログ投稿 からコピーした次の図のようになります。
Pythonのmatplolibに基づいたすぐに使用できる関数はありますか? gallery を検索しましたが、必要なものに似たものが見つかりませんでした。技術的には、これは簡単な作業ですが、考えられるすべてのケース、ラベル、タイトルなどを適切に処理するのは非常に面倒です。
[〜#〜] update [〜#〜]以下の私の答えをすばやく汚い概算で見てください。
Pandas
組み込み関数scatter_matrix
( ソースコード )これはこんな感じです。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame(np.random.randn(1000, 4), columns=['A','B','C','D'])
axes = pd.tools.plotting.scatter_matrix(df, alpha=0.2)
plt.tight_layout()
plt.savefig('scatter_matrix.png')
ただし、これはpandas
固有です(ただし、開始点として使用できます)。
パンダには、さらにR
のようなプロットがいくつかあります。 docs をご覧ください。
私のニーズへの迅速で汚い近似:
def pair(data, labels=None):
""" Generate something similar to R `pair` """
nVariables = data.shape[1]
if labels is None:
labels = ['var%d'%i for i in range(nVariables)]
fig = pl.figure()
for i in range(nVariables):
for j in range(nVariables):
nSub = i * nVariables + j + 1
ax = fig.add_subplot(nVariables, nVariables, nSub)
if i == j:
ax.hist(data[:,i])
ax.set_title(labels[i])
else:
ax.plot(data[:,i], data[:,j], '.k')
return fig
上記のコードはここにパブリックドメインにリリースされます
Matplotlibの最近のバージョン(少なくとも1.4)のsubplots
関数は、これを少し簡単にします。
def pairs(data, names):
"Quick&dirty scatterplot matrix"
d = len(data)
fig, axes = plt.subplots(nrows=d, ncols=d, sharex='col', sharey='row')
for i in range(d):
for j in range(d):
ax = axes[i,j]
if i == j:
ax.text(0.5, 0.5, names[i], transform=ax.transAxes,
horizontalalignment='center', verticalalignment='center',
fontsize=16)
else:
ax.scatter(data[j], data[i], s=10)
seaborn pairplot(...)関数 を使用できます。これは、Rのpairs(...)関数とまったく同じです。
私の知る限り、そのようなすぐに使える関数はありません。