2016-09-29 7 views
1

Мне нужно создать матрицу рассеяния в Python. Я попытался использовать scatter_matrix для этого, но я хотел бы оставить только графики рассеяния над диагональной линией.Аналоговая функция Pandas scatter_matrix для пар (lower.panel, upper.panel)

Я действительно начинаю (далеко не удался), и у меня проблемы, когда столбцы имеют имена (а не номера по умолчанию).

Вот мой код:

import itertools 
import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 

data=pd.DataFrame(np.random.randint(0,100,size=(10, 5)), columns=list('ABCDE')) #THE PROBLEM IS HERE - I WILL HAVE COLUMNS WITH NAMES 

d = data.shape[1] 

fig, axes = plt.subplots(nrows=d, ncols=d, sharex=True, sharey=True) 
for i in range(d): 
    for j in range(d): 
      ax = axes[i,j] 
      if i == j: 
       ax.text(0.5, 0.5, "Diagonal", transform=ax.transAxes, 
         horizontalalignment='center', verticalalignment='center', 
         fontsize=16) 
      else: 
       ax.scatter(data[j], data[i], s=10) 

ответ

1

У вас есть вопрос при выборе столбца из кадра данных. Вы можете использовать iloc для выбора столбцов на основе целочисленного местоположения. Измените последнюю строку:

ax.scatter(data.iloc[:,j], data.iloc[:,i], s=10) 

Дает:

enter image description here