如何在 Seaborn FacetGrid 中设置刻度?

How to set ticks in Seaborn FacetGrid?

我有一个这样的代码,我想在 X 轴上添加刻度,这样我就可以更好地看到超过 150 的值对应于什么,例如。我的 X 值的范围是 178 到 17639。

bins = np.linspace(df.days_with_cr_line.min(), df.days_with_cr_line.max(), 32)

g = sns.FacetGrid(df, col="loan_status", hue="loan_status", palette=['#8856a7', '#f03b20'], col_wrap=2)
g.map(plt.hist, 'days_with_cr_line', bins=bins, ec="k")

我试过了

g.set_xticks(np.arange(0,18000,500), minor=True)
AttributeError: 'FacetGrid' object has no attribute 'set_xticks'

for axes in g.axes.flat:
    _ = axes.set_xticks(axes.get_xticks(range(0,18000)))

这将删除刻度标签而不添加任何刻度。

如果您使用set设置x轴上的刻度数,然后为它们设置刻度标签,您将得到预期的结果。数据已正确创建。

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

np.random.seed(20210831)
df = pd.DataFrame({'days_with_cr_line':np.random.randint(10,1000,size=1000),
                  'loan_status':np.random.choice(['Fully paid','Not fully paid'], size=1000)})
bins = np.linspace(df.days_with_cr_line.min(), df.days_with_cr_line.max(), 32)

g = sns.FacetGrid(df, col="loan_status", hue="loan_status", palette=['#8856a7', '#f03b20'], col_wrap=2)
g.map(plt.hist, 'days_with_cr_line', bins=bins, ec="k")
g.set(xticks=np.arange(0,1050,50))
g.set_xticklabels(np.arange(0,1050,50), rotation=90)