Аналоговая функция Pandas scatter_matrix для пар (нижняя панель, верхняя панель)

#python #r #pandas #scatter-plot #subplot

#python #r #pandas #точечный график #сюжет

Вопрос:

Мне нужно создать матрицу рассеяния на Python. Я пытался использовать scatter_matrix для этого, но я хотел бы оставить только точечные диаграммы над диагональной линией.

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

Вот мой код:

 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)
  

Дает:

введите описание изображения здесь