【问题标题】:Seaborn x axis doesn't cover all the dataSeaborn x 轴不涵盖所有数据
【发布时间】:2018-11-23 16:56:01
【问题描述】:

当我根据Seaborn website 上的示例使用提示数据集制作 Seaborn 箱线图时,x 轴覆盖箱线图的长度。

import seaborn as sns
sns.set_style("ticks")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x=tips["total_bill"])

但如果我更改数据集并执行相同的操作,x 轴甚至不会覆盖上四分位数。为什么默认值没有扩展到覆盖所有数据,我该如何解决这个问题?我希望它从最低数据点下方到最高数据点上方。

my_df = pd.DataFrame({'total_bill' : [3082, 2024, 3333, 1544, 1861]})
sns.set_style("ticks")
tips = sns.load_dataset("tips")
ax = sns.boxplot(x=my_df["total_bill"])
sns.despine(trim=True)

【问题讨论】:

  • 我对 seaborn 的例子也有类似的问题。您是否查看过 tips = sns.load_dataset("tips") 中的形状/数据?它看起来像什么,是否与您作为输入提供的内容相当一致?
  • 我用小费建模my_df,所以它是一样的。我不认为轴是那个例子很好。总账单价值为 50.81,超出了轴。我希望轴覆盖每个点。

标签: python python-3.x seaborn


【解决方案1】:

您明确要求 seaborn 通过在您的代码中添加 sns.despine(trim=True) 来切割 x 轴。您可以忽略它以获得完整的轴

import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns

my_df = pd.DataFrame({'total_bill' : [3082, 2024, 3333, 1544, 1861]})
tips = sns.load_dataset("tips")
ax = sns.boxplot(x=my_df["total_bill"])

plt.show()

如果你想去掉刺,你仍然可以添加

sns.despine(left=True)

您可以根据自己的喜好手动设置刻度位置。在最简单的情况下,您使用已经存在的刻度位置,并将它们固定到轴上

ax.set_xticks(ax.get_xticks())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-09
    • 2017-11-07
    • 2019-08-02
    • 2023-03-12
    • 2018-07-18
    • 2021-12-29
    • 2020-03-06
    • 2017-09-16
    相关资源
    最近更新 更多