【问题标题】:Creating Seaborn stripplot from multiple lists [duplicate]从多个列表创建Seaborn stripplot [重复]
【发布时间】:2021-10-20 16:03:42
【问题描述】:

我正在尝试从 4 个数据列表(它们的长度不同)创建一个 seaborn stripplot。 每个列表都包含 0 到 1 之间的数字,我希望每个数字都是图中的一个点,而每个列表都是图中不同的“x 轴类别”。

例如,如果这是我的数据-

pn=[0.70604173074, 0.7019483995600001, 0.70271586578, 0.6977801500400002] 

tc=[0.49288115891999995, 0.7288539852599999, 0.6258675808399999, 0.33007094978000007, 0.45538473337999996, 0.5849680367, 0.5151045102999999, 0.78011459304, 0.52564381038] 

pc=[0.6286486934200001, 0.6450898248599999, 0.45266545178, 0.54746642074, 0.36717567197999995, 0.6974179308799999] 

tn= [0.7776927921000001, 0.7845524455400001]

我想像这样在一个带状图上绘制这 4 个列表- example 只是我想要我的列表名称而不是天数,我希望 Y 轴的范围从 0 到 1(代表我的数字范围)。

不幸的是,我只是成功地随机绘制它们,而不是按不同列表在 X 轴上排序

如果可能的话,我还想在每个列表中添加箱线图。

任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: python pandas matplotlib plot seaborn


    【解决方案1】:

    使用DataFrame.from_dictorient='index' 将您的数据放入df

    df = pd.DataFrame.from_dict(
        data=dict(pn=pn, tc=tc, pc=pc, tn=tn),
        orient='index',
    ).T
    
    #          pn        tc        pc        tn
    # 0  0.706042  0.492881  0.628649  0.777693
    # 1  0.701948  0.728854  0.645090  0.784552
    # 2  0.702716  0.625868  0.452665       NaN
    # 3  0.697780  0.330071  0.547466       NaN
    # 4       NaN  0.455385  0.367176       NaN
    # 5       NaN  0.584968  0.697418       NaN
    # 6       NaN  0.515105       NaN       NaN
    # 7       NaN  0.780115       NaN       NaN
    # 8       NaN  0.525644       NaN       NaN
    

    这种格式直接适用于sns.stripplot:

    ax = sns.stripplot(data=df)
    ax.set_ylim(0, 1)
    

    它也适用于sns.boxplot,因此您可以将其覆盖在同一个ax上:

    ax = sns.stripplot(data=df)
    sns.boxplot(data=df, saturation=0.4, ax=ax)
    ax.set_ylim(0, 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-03
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2021-10-13
      • 2019-02-02
      • 2017-08-26
      相关资源
      最近更新 更多