【问题标题】:How to change the order of columns and plot images side by side with seaborn in Python?如何在 Python 中更改列的顺序并与 seaborn 并排绘制图像?
【发布时间】:2021-12-07 13:41:03
【问题描述】:

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

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

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

谢谢。

资料链接: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"])

【问题讨论】:

    标签: python csv seaborn


    【解决方案1】:

    您可以将数据框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()
    

    【讨论】:

    • 感谢@JohanC,它运行良好!我手动将数据收集到一个 excel 文件中,导出为 csv 并使用 pd.read_csv 创建框架。
    猜你喜欢
    • 2023-03-08
    • 2017-08-25
    • 2020-06-23
    • 2018-11-29
    • 2023-03-10
    • 2016-01-08
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多