如何在Seaborn FacetGrid中设置刻度?

3

我有这样一个代码,我想在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)))

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

1个回答

4
如果您使用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)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接