【问题标题】:Seaborn catplot + barplot : extra axisSeaborn catplot + barplot:额外的轴
【发布时间】:2019-11-10 10:13:52
【问题描述】:

我使用 Seaborn/Matplotlib 为不同的参数显示不同的输出(例如时间和距离)。我想将两个输出关联到同一个图上,因此我使用 seaborn 的 satplot 和 barplot。

我的问题是我没有得到预期的显示。图表在这里,但出现了一些嘈杂的额外轴。

我正在运行以下代码

ax = plt.subplot(311)
ax2 = ax.twinx()

data = sns.load_dataset("tips")
sns.barplot(ax=ax, x="day",y="total_bill", hue="size" , data=data, ci=None)
ax.set_yscale("log")

sns.catplot(data=data, x="day", y="tip", ax=ax2, hue="size", kind="swarm", palette="bright")

我得到以下结果:

你能帮我去掉这个多余的轴吗?当有多个子图时尤其不方便。

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    您看到的额外轴是catplot 返回的轴。要摆脱它,您可以在sns.catplot(...) 之后添加以下行,其中索引2 指的是图形的计数。

    plt.close(2)
    

    为了测试,如果你使用plt.close(1),它将删除包含条形图的主要图形

    【讨论】:

    • 你知道为什么 caplot 在我指定 ax=ax2 时生成另一个轴吗?它创造了另一个人物?
    • @matthiasbe :与 IOBE 在上面的回答中指出的原因相同
    • 虽然我喜欢你的解决方案,但我接受了 IOBE 的答案,因为它在我的用例中更方便。
    • @matthiasbe:完全没有问题。我们都是一个社区:)
    【解决方案2】:

    您看到的额外轴是您创建的catplotcatplot 是图形级函数(即它创建自己的图形);因此实际上并没有ax 参数。人们可以将其视为仍然允许它的错误。您可能想做的是创建一个sns.swarmplot,它确实有ax 参数。

    【讨论】:

      猜你喜欢
      • 2015-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-15
      • 1970-01-01
      • 2019-10-31
      • 2023-01-17
      相关资源
      最近更新 更多