Как построить сетку гистограмм с Matplotlib в порядке столбцов DataFrame? - PullRequest
2 голосов
/ 10 апреля 2020

Рассматривает простой фрейм данных ниже:

import pandas  as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'var3':[1,3,9,6,1,6,3,1,1,3],
                   'var1':[9,1,2,6,6,5,9,3,1,7],
                   'var2':[6,6,2,9,8,3,5,4,1,3]})
df

enter image description here

Теперь давайте построим набор гистограмм из этих данных:

df.hist(layout=(1,3))
plt.show()

enter image description here

Обратите внимание, что порядок (слева направо) гистограмм на рисунке отличается от порядка столбцов в кадре данных. Как заставить гистограммы подчиняться порядку своего источника данных?

Ответы [ 2 ]

1 голос
/ 10 апреля 2020

Я не смог найти способ сделать это в функции df.hist(). Но вы можете сделать это sh простым l oop ниже:

fig, ax = plt.subplots(1, len(df.columns), figsize=(3*len(df.columns), 3))
for i, var in enumerate(df):
    df[var].hist(ax=ax[i])
    ax[i].set_title(var)
plt.show()

Результат:

enter image description here

0 голосов
/ 10 апреля 2020

Мне нравится ответ @ foglerit, но вот другое обходное решение:

import pandas  as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({'var3':[1,3,9,6,1,6,3,1,1,3],
                   'var1':[9,1,2,6,6,5,9,3,1,7],
                   'var2':[6,6,2,9,8,3,5,4,1,3]})

columns = df.columns  # save original column names
columns_temp = []  # create temporary column names, numbered
for i, col in enumerate(df.columns):
    columns_temp.append('(' + str(i+1) + ') ' + str(col))
df.columns = columns_temp

df.hist(layout=(1,3))  # now the column order is not messed up

df.columns = columns  # reassign original column names

df.hist plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...