matplotlib 为什么我的情节在我的子情节之外绘制?

1qczuiv0  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(148)

我不能理解为什么我的情节被安排在我的次要情节之外。
有谁能告诉我我哪里错了吗?
下面是我的代码片段:

figure, (ax1,ax2,ax3) = plt.subplots(1, 3, sharex=True)
figure.suptitle('repeat_retailer')

sns.catplot(ax= ax1, data=ds, x="repeat_retailer", y="distance_from_home", hue="fraud", jitter = True)

sns.catplot(ax= ax2, data=ds, x="repeat_retailer", y="distance_from_last_transaction", hue="fraud", jitter = True)

sns.catplot(ax= ax3, data=ds, x="repeat_retailer", y="ratio_to_median_purchase_price", hue="fraud", jitter = True)

plt.show()

输出如图所示。

2lpgd968

2lpgd9681#

看起来子区的大小或图形大小有问题。您可以尝试使用figure.set_size_inches(width,height)指定图形大小,也可以使用figure.tight_layout()调整子区的大小或使用figure.subplots_adjust(hspace=height,wspace=width)指定子区的高度和宽度。
此外,还可以通过指定subplot_adjust参数检查标题和子区是否有重叠。
子情节的一般语法如下:语法:fig,ax = plt.子图(nrows,ncols)

  • nrows:图形中子区的行数。
  • ncols:图中子图的列数。
    例如,在代码中
figure, (ax1,ax2,ax3) = plt.subplots(1, 3, sharex=True),

在图中有一行和三列子区,并且ax1、ax2和ax3是每个子区的轴对象。
然后您可以使用相应的轴对象在每个子图上绘图,例如

sns.catplot(ax= ax1, data=ds, x="repeat_retailer", 
    y="distance_from_home", hue="fraud", jitter = True)

使用ax1绘制第一个子图。

已编辑

那么也许问题出在海运的猫图上。你试过用散点图看看是否有效吗?

figure, (ax1, ax2, ax3) = plt.subplots(1, 3, sharex=True)

    sns.scatterplot(ax=ax1, data=ds, x="repeat_retailer",                 
    y="distance_from_home", hue="fraud", jitter=True)
    sns.scatterplot(ax=ax2, data=ds, x="repeat_retailer", y="distance_from_last_transaction", hue="fraud", jitter=True)
    sns.scatterplot(ax=ax3, data=ds, x="repeat_retailer", y="ratio_to_median_purchase_price", hue="fraud", jitter=True)

    plt.show()

相关问题