У меня есть наборы фреймов данных, которые я группирую в функции, которая строится на основе like
имен с использованием .filter(like='some string')
.
Мои фреймы данных имеют тенденцию выглядеть следующим образом:
d = {'Upper Density': [1, 2, 4, 6], 'Lower Density': [3, 4, 7, 8], 'Mid Density': [6, 5, 7, 10], 'High Temperature' : [10, 11, 12, 10], 'Low Temperature' : [4, 5, 6, 7]}
df = pd.DataFrame(data=d)
variables = list(df.columns)
Я фильтрую по сходству столбцов друг с другом (то есть: плотность и температура), но, очевидно, длина каждого из них будет отличаться (плотность имеет 3 гистограммы для построения, а температура имеет только 2).
У меня есть list
имен переменных строк, которые я использую для фильтрации по имени variables
, который просто содержит имена столбцов в d
.
Мой код выглядит следующим образом:
для var_name в переменных:
df_var = (df.filter(like=str(var_name))).astype(float) # filter on each variable for comparison
n = len(df_var.columns) # get the length of each set of columns
fig, ax = plt.subplots(1, n, sharex='col', sharey='row', figsize=(16,8)) # set the default axis parameters
axes = ax.ravel()
for i, j in zip(range(n), axes):
# Plot Frequency
j.hist([df_var.iloc[:,i-1], df_var.iloc[:,i]], alpha=0.4, bins=bin_size, color=colors)
j.set_title(df_var.columns[i][:])
j.legend(loc='best')
j.grid(True)
Когда они повторяются, они выстраивают 2 одинаковых гистограммы бок о бок, потому что subplots
имеет аргументы 1
и n
.Но для того, чтобы я повторил, я не понимаю, как мне обойтись, используя subplots
.
. Я бы хотел, чтобы на каждом наборе одинаковых столбцов была 1 гистограмма (т.е.что верхняя плотность, нижняя плотность и средняя плотность нанесены на график вместе, а верхняя и нижняя температура построены на основе количества совпадений.
Как я могу изменить свой код, чтобы получить это?