【问题标题】:Hue on Seaborn BarplotSeaborn Barplot 上的色调
【发布时间】:2021-02-17 22:06:14
【问题描述】:

我希望在 x 轴上绘制“外科医生 ID”,在 y 轴上绘制“病例总数”。在每个条形中,我想根据治疗 X 和 Y 的百分比为条形着色。

treatment  surgeon_id initial_severity  Total Cases  Treatment X%  Treatment Y%
    0                   2            MINOR         16.0      6.250000     93.750000
    1                   3            MINOR         41.0     36.585366     63.414634
    2                   4            MINOR         69.0     33.333333     66.666667
    3                   5            MINOR        102.0     34.313725     65.686275
    4                   6            MINOR        348.0     11.781609     88.218391
    5                   7            MINOR         20.0     40.000000     60.000000
    6                   8            MINOR         90.0     28.888889     71.111111
    7                   9            MINOR         41.0     17.073171     82.926829
    8                  10            MINOR        139.0     24.460432     75.539568
    9                  11            MINOR         46.0     23.913043     76.086957
    10                 12            MINOR         35.0     20.000000     80.000000
    11                 13            MINOR         96.0     29.166667     70.833333
    12                 16            MINOR         51.0     21.568627     78.431373
    13                 17            MINOR         90.0     27.777778     72.222222
    14                 18            MINOR        100.0     24.000000     76.000000
    15                 19            MINOR         78.0     28.205128     71.794872
    16                 20            MINOR         96.0     25.000000     75.000000
    17                 21            MINOR         23.0     26.086957     73.913043
    18                 22            MINOR          9.0     33.333333     66.666667
    19                 25            MINOR         78.0     30.769231     69.230769
    20                 28            MINOR          7.0     14.285714     85.714286
    21                 30            MINOR         70.0     25.714286     74.285714
    22                 31            MINOR         21.0     42.857143     57.142857
    23                 32            MINOR        101.0     29.702970     70.297030
    24                 41            MINOR          1.0    100.000000      0.000000
    25                 43            MINOR         15.0      0.000000    100.000000

当前绘图代码:

sns.barplot(x="surgeon_id", y="Total Cases", data=minor_treatment_choice)

如何根据治疗 X 和 Y 的百分比为每个条着色?我还希望条形中的治疗 X 和 Y 的颜色对于每个外科医生 ID 都是相同的颜色。

谢谢!

【问题讨论】:

    标签: python seaborn


    【解决方案1】:

    您可以添加两个额外的列,将百分比乘以总病例数。

    df["Treatment X"] = df["Treatment X%"] * df["Total Cases"] / 100
    df["Treatment Y"] = df["Treatment Y%"] * df["Total Cases"] / 100
    

    然后,您可以使用 pandas 创建堆积条形图:

    df.set_index("surgeon_id")[["Treatment X", "Treatment Y"]].plot.bar(color=['crimson', 'dodgerblue'], stacked=True)
    

    要使用 Seaborn 创建堆叠条,您可以先绘制下部条,然后在第二次调用中添加上部条,将它们的底部设置为下部条的顶部:

    from matplotlib import pyplot as plt
    import pandas as pd
    import seaborn as sns
    
    df["Treatment X"] = df["Treatment X%"] * df["Total Cases"] / 100
    df["Treatment Y"] = df["Treatment Y%"] * df["Total Cases"] / 100
    
    ax = sns.barplot(data=df, x="surgeon_id", y=df["Treatment X"], color='crimson', label="Treatment X")
    sns.barplot(data=df, x="surgeon_id", y=df["Treatment Y"], bottom=df["Treatment X"], color='dodgerblue',
                label="Treatment Y", ax=ax)
    ax.legend()
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-16
      • 2020-07-26
      • 2020-06-27
      • 2020-01-29
      • 2020-02-04
      • 1970-01-01
      • 2017-08-30
      • 1970-01-01
      相关资源
      最近更新 更多