【问题标题】:Matplotlib/Seaborn plot a boxplot with on the x-axis different range of values categoriesMatplotlib/Seaborn 在 x 轴上绘制一个箱线图,其中包含不同的值类别范围
【发布时间】:2020-09-07 18:42:18
【问题描述】:

我想在 x 轴上制作一个箱线图,将 x 变量分成不同的范围,例如:0-5、5-10、10+。有没有办法在 Matplotlib/Seaborn 中有效地做到这一点,而不必基于子集创建不均匀的新列?所以对于下面的这个示例数据集,我想要一个带有 3 个框的箱线图,0-5 (1a4j,1a6u,1ahc), 5-10 (1brq,1bya), 10+ (1bya,1bbs) > 变量

    structure rot_bonds no_atoms logP
0   1a4j    3   37  2.46
1   1a6u    4   17  1.58
2   1ahc    0   10  -0.06
3   1bbs    20  51  4.81
4   1brq    5   21  5.51
5   1bya    10  45  -9.75

提前致谢。

【问题讨论】:

    标签: python pandas matplotlib seaborn


    【解决方案1】:

    使用 seaborn,您可以使用分割成范围作为 x 轴,例如 'no_atoms' 作为箱线图的 y 值:

    from matplotlib import pyplot as plt
    from io import StringIO
    import pandas as pd
    import seaborn as sns
    
    s = '''    structure rot_bonds no_atoms logP
    0   1a4j    3   37  2.46
    1   1a6u    4   17  1.58
    2   1ahc    0   10  -0.06
    3   1bbs    20  51  4.81
    4   1brq    5   21  5.51
    5   1bya    10  45  -9.75'''
    
    df = pd.read_csv(StringIO(s), delim_whitespace=True)
    sns.boxplot(x=pd.cut(df['rot_bonds'], [0, 5, 10, 1000]), y='no_atoms', data=df)
    plt.show()
    

    【讨论】:

    • 太棒了!谢谢
    猜你喜欢
    • 2019-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    • 2020-05-06
    • 2023-04-10
    • 2021-08-18
    • 1970-01-01
    相关资源
    最近更新 更多