如何使用Pandas Scatter Matrix

时间:2016-08-10 18:46:13

标签: python pandas matplotlib

所以我试图创建一个大熊猫散射矩阵的子图,但是碰到了一点墙。我已经环顾了其他类似的问题,但没有一个答案似乎解决了。现在我只是想创建一个2的子图。我将在某个时刻转向两个两个子图,但我只是想从小开始才能让它工作。这是我的代码

df_SH = pd.DataFrame({'East_Pacific_SH':DJF_con_SH_east_finite_all, 
                   'West_Pacific_SH':DJF_con_SH_west_finite_all,
                   'Atl_SH':DJF_con_SH_atl_finite_all,
                  'Zonal_SH':DJF_con_SH_zonal_finite_all})

df_NH = pd.DataFrame({'East_Pacific_NH':DJF_con_NH_east_finite_all, 
                   'West_Pacific_NH':DJF_con_NH_west_finite_all,
                   'Atl_NH':DJF_con_NH_atl_finite_all,
                  'Zonal_NH':DJF_con_NH_zonal_finite_all})

region_name=np.array(['East_Pacific_SH', 'West_Pacific_SH', 'Atl_SH', 'Zonal_SH'])


plt.suptitle('Control Correlations')
plt.subplot(211)
axes = pd.scatter_matrix(df_SH, alpha=0.2, diagonal='kde')
corr = df_SH.corr().as_matrix()
for i, j in zip(*plt.np.triu_indices_from(axes, k=1)):
    axes[j, i].annotate("%.3f" %corr[j,i], (.8, .9), xycoords='axes fraction', ha='center', va='center')
plt.title('Control DJF SH', size = 15)
#plt.savefig(filename='DJF_SH_Control_Scatter.pdf', ftype='pdf')
#plt.show()

plt.subplot(212)
axes2 = pd.scatter_matrix(df_NH, alpha=0.2, diagonal='kde')
corr2 = df_NH.corr().as_matrix()
for i, j in zip(*plt.np.triu_indices_from(axes, k=1)):
    axes2[j, i].annotate("%.3f" %corr2[j,i], (.8, .9), xycoords='axes fraction', ha='center', va='center')
plt.title('Control DJF NH', size = 15)
#plt.savefig(filename='DJF_NH_Control_Scatter.pdf', ftype='pdf')
plt.show()

以下是结果

result

result

result

1 个答案:

答案 0 :(得分:1)

pandas目前没有做到这一点,尽管它有一个很有希望的ax参数:

iris = pd.DataFrame.from_csv('iris.csv')
chicks = pd.DataFrame.from_csv('ChickWeight.csv')
import matplotlib.pyplot as plt

fig, axs = plt.subplots(2)

#iris.plot.scatter('PL', 'PW', ax = axs[0])        
#chicks.plot.scatter('Diet', 'Chick', ax = axs[1]) # This is fine.

pd.scatter_matrix(iris, ax=axs[0], alpha=0.2)
pd.scatter_matrix(chicks, ax=axs[1], alpha=0.2)    # This clears axes unexpectedly.

plt.savefig('two_pd_scatter.png')

发出警告

  

/usr/local/lib/python2.7/site-packages/pandas/tools/plotting.py:3303:UserWarning:要输出多个子图,正在清除包含传递轴的图形

     

"正在被清除",UserWarning)

请注意,它专门清除整个数字,而不仅仅是传递的轴。

我通过为散点矩阵生成四个紧密边缘,系统命名的数字并设置一个文档(TeX,无论如何)来在正确的位置和正确的标题中导入这些数字来解决这个问题。