我在使用relplot全局更改绘图渲染的x-tick标签时遇到了一个问题
其想法是将两个绘图的int更改为string x-tick标签。所需的标签为['a','b','c','d']
然而,如下所示,只有底部图的x标签被成功更改。

重现上图的代码如下所示。
tips = sns.load_dataset("tips")
g = sns.relplot(x="total_bill", y="tip", hue="day", col="time", data=tips, facet_kws=dict(sharex=False),col_wrap=1)
header_name=['a','b','c','d']
x_tick_interval = 15
value_tick = range ( 0, 50, x_tick_interval )
header_name_sel = [header_name[idx] for idx in range ( 0,len(value_tick))]
# g.set_xticklabels ( fontsize=8, rotation=45, labels=header_name, step=15 )
plt.xticks ( ticks=value_tick, labels=header_name_sel, ha="right" )
plt.show ()发布于 2021-03-05 02:45:17
您可以手动获取轴,因为seaborn基本上是matplotlib的包装器。请参考下面的示例。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
tips = sns.load_dataset("tips")
g = sns.relplot(x="total_bill", y="tip", hue="day", col="time", data=tips, facet_kws=dict(sharex=False),col_wrap=1)
header_name=['a','b','c','d']
x_tick_interval = 15
value_tick = range ( 0, 50, x_tick_interval )
header_name_sel = [header_name[idx] for idx in range ( 0,len(value_tick))]
for ax in g.axes.flat:
labels = ax.get_xticklabels() # get x labels
ax.set_xticks(ticks=value_tick) # set new labels
ax.set_xticklabels(fontsize=8, rotation=45, labels=header_name)
plt.show ()

https://stackoverflow.com/questions/66476585
复制相似问题