如何在 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,然后将变量名称用于 catplot
的 col=
参数。 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()
我有一个包含多选题答案的数据集。测试包括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,然后将变量名称用于 catplot
的 col=
参数。 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()