如何在 Python 中更改列的顺序并与 seaborn 并排绘制图像?

How to change the order of columns and plot images side by side with seaborn in Python?

我有一个包含多选题答案的数据集。测试包括24个考试代码,每个考试代码有50个关键答案(A,B,C,D为50题)。下面是它的一角,你可以用我放在最后的 link 访问整个东西。

我想统计每个考试代码中每个答案(ABCD)的数量。在这里,我绘制了 2 个考试代码,如下所示:

如何将它们并排绘制并更改 Python 中答案的顺序?我希望列的顺序是“ABCD”。 (我试过使用 plt.subplot、sns.factorplot,但我总是出错)。

谢谢。

数据link:https://drive.google.com/file/d/1dYuHEKTJHnVO_dUOyGBIYfFvkZIunLyE/view?usp=sharing

第 1 版:我可以使用以下代码按顺序绘制。

sns.catplot(x = 'code0', data = test, kind = "count", order = ["A", "B", "C", "D"])

您可以 melt 数据帧到 long form,然后将变量名称用于 catplotcol= 参数。 col_wrap 告诉在开始新行之前要创建多少列。 height= 控制各个子图的高度。 aspect= 是子图的宽度和高度之间的比率。

from matplotlib import pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np

test = pd.DataFrame(np.random.choice([*'ABCD'], size=(50, 24)),
                    columns=[f'code{i}' for i in range(24)])
g = sns.catplot(data=test.melt(var_name='code'), x='value', col='code', col_wrap=6,
                order=["A", "B", "C", "D"], kind='count',
                sharex=False, height=2, aspect=1)
plt.tight_layout()
plt.show()