使用sns.despine时坐标轴被截断,如何将轴范围设为数据点最小最大值?
你遇到的坐标轴范围被限制的问题,是sns.despine方法中trim=True参数导致的。该参数会自动将坐标轴两端裁剪到与最外侧的刻度对齐,不会匹配数据点的实际极值,对应两种解决方法如下:
方案一:直接关闭裁剪功能
最简单的修改方式是将sns.despine中的trim=True改为trim=False,即可保留默认的坐标轴范围,同时保留偏移20的美观效果:sns.despine(offset = 20, trim = False)方案二:手动设置坐标轴范围为数据极值
如果需要保留trim的刻度对齐效果,同时让坐标轴刚好贴合数据的最小最大值,可以在调用despine前,手动给每个子图设置x、y轴范围,示例如下:# 第一个子图设置轴范围 x_col = rablog_df['expected ratio'] y_col = rablog_df[rab] axes[0].set_xlim(x_col.min(), x_col.max()) axes[0].set_ylim(y_col.min(), y_col.max())其余两个子图按照对应的数据框和字段做相同设置即可,设置完成后再调用
sns.despine,trim后的坐标轴就会贴合你的数据范围。
额外优化建议
你当前代码中的sns.despine仅会作用于最后一个子图,如果需要给三个子图都生效,可以循环批量处理:
for ax in axes: sns.despine(ax=ax, offset=20, trim=False)
另外你代码中多次调用plt.savefig属于重复保存,所有子图画完后调用一次即可,避免不必要的IO操作;同时你第一处annotate的代码存在语法错误,rablog_df[rab [6]]应修正为rablog_df[rab][6]。

内容的提问来源于stack exchange,提问作者Alex L
相关产品推荐
相关产品推荐

