【问题标题】:Fix inverted distplot when plotting distplot and boxplot together using seaborn in Python在 Python 中使用 seaborn 将 distplot 和 boxplot 一起绘制时修复倒置的 distplot
【发布时间】:2020-11-14 05:27:44
【问题描述】:

我的 DataFrame 如下:-

spending    advance_payments    probability_of_full_payment     current_balance     credit_limit    min_payment_amt     max_spent_in_single_shopping
0   19.94   16.92   0.8752  6.675   3.763   3.252   6.550
1   15.99   14.89   0.9064  5.363   3.582   3.336   5.144
2   18.95   16.42   0.8829  6.248   3.755   3.368   6.148
3   10.83   12.96   0.8099  5.278   2.641   5.182   5.185
4   17.99   15.86   0.8992  5.890   3.694   2.068   5.837
...     ...     ...     ...     ...     ...     ...     ...
205     13.89   14.02   0.8880  5.439   3.199   3.986   4.738
206     16.77   15.62   0.8638  5.927   3.438   4.920   5.795
207     14.03   14.16   0.8796  5.438   3.201   1.717   5.001
208     16.12   15.00   0.9000  5.709   3.485   2.270   5.443
209     15.57   15.15   0.8527  5.920   3.231   2.640   5.879

现在我正在尝试使用 seaborn 库在 displot 顶部绘制箱线图。 Distplot 本身工作正常,但是当我在同一轴上添加 boxplot 时,distplot 会倒置,不知道为什么会这样。有人可以帮我解决这个问题吗?

下面是我的代码:-

fig, axs = plt.subplots(3, 3,figsize=(10,10))
j=0
k=0
for i in df.columns:
    sns.distplot(df[i],ax=axs[j,k],color='blue')
    sns.boxplot(df[i],ax=axs[j,k],color='green',boxprops=dict(alpha=.5))
    plt.gca().invert_xaxis()
    k=k+1
    if k==3:
        k=0
        j=j+1
fig.tight_layout()
plt.show()

我尝试过plt.gca().invert_xaxis(),但没有帮助。

下面是我得到的输出。

【问题讨论】:

    标签: python matplotlib seaborn boxplot


    【解决方案1】:

    在同一个数字上添加不同的图表类型是导致问题的原因,因为 seaborn 不能很好地处理它们。相反,seaborn 提供了内置的绘图选项来组合不同的图表。在您的情况下,您希望将箱线图与内核估计相结合。 Seaborn 允许您使用 violinplot 来做到这一点。

    它可以产生类似的东西:

    (取自上面链接的文档)

    格式看起来与您尝试做的有点不同,但本质上它显示相同的数据:频率与箱线图。

    您的案例代码:

    fig, axs = plt.subplots(3, 3,figsize=(10,10))
    j=0
    k=0
    for i in df.columns:
        sns.violinplot(df[i],ax=axs[j,k],cut=0)
        k=k+1
        if k==3:
            k=0
            j=j+1
    fig.tight_layout()
    plt.show()
    

    我一直在寻找一个很好的理由,为什么在与箱线图一起绘制时 distplot 是倒置的。到目前为止,我找不到一个好的答案。

    【讨论】:

    • 感谢您的回答。我知道小提琴图基本上代表了我试图绘制的同一件事,甚至可能是一种更优雅、更恰当的方式来表示意图数据。然而,我从来没有发现小提琴图非常直观,因此选择了箱线图在 distplot 方法之上,这对我来说以更好的方式传达了数据。如果您发现任何关于 distplot 反转的原因,请告诉我,我也在搜索网络,我想可能是与 sns.boxplot 相关的一些全局设置导致了这种情况,只是无法弄清楚。
    猜你喜欢
    • 2020-09-26
    • 2016-05-25
    • 2021-04-06
    • 1970-01-01
    • 2020-12-02
    • 2017-10-12
    • 2016-11-28
    • 2019-04-19
    • 2019-02-07
    相关资源
    最近更新 更多