Я подумал, что добавлю пример использования seaborn, поскольку он может быть полезен в этом контексте, поскольку с ним довольно легко обернуть вещи по столбцам. Я ожидаю, что найдется кто-то, кто сможет дать более хороший ответ, возможно, используя pandas, и я надеюсь, что да.
import seaborn as sns
import pandas as pd
import numpy as np
np.random.seed(1)
N = 2000
df = pd.DataFrame(np.random.randint(0,4, (N,7)))
df['system'] = np.random.randint(0, 69, N )
Что дает df
как;
0 1 2 3 4 5 6 system
674 1 2 3 1 0 0 0 15
1699 0 0 1 3 0 0 1 9
1282 0 0 0 0 1 0 2 47
1315 0 3 1 3 1 1 1 37
1210 1 1 0 3 1 3 1 11
Плавление данных перед построением:
df_plot = df.melt(id_vars='system')
Что выглядит как
system variable value
8756 23 4 2
5474 24 2 2
11242 12 5 2
7820 56 3 3
Тогда
sns.catplot(x = 'variable', y = 'value', col = 'system',
hue = 'variable', dodge = False,
col_wrap = 6, data = df_plot, kind = 'bar', ci = False)