繁体   English   中英

如何在 Seaborn 中全局更改 xticks label relplot

[英]How to globally change xticks label relplot in Seaborn

我面临一个问题,使用relplot将 x-tick label 全局更改为 plot 渲染

想法是将int更改为string x-tick label 对于 plot。 所需的 label 是['a','b','c','d']

但是,如下图可以看到,只有底部plot的x label改成功了。

在此处输入图像描述

重现上图的代码如下。

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 ()

您可以手动抓取轴,因为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 ()

输出图像

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM