如何旋转Seaborn JointGrid的轴文本?plt.figure为何对其无效?
Seaborn JointGrid:x轴文本旋转与尺寸设置问题解决
一、旋转x轴文本解决重叠
JointGrid包含三个子轴:主绘图区(ax_joint)、顶部边际直方图(ax_marg_x)、右侧边际直方图(ax_marg_y)。要解决x轴文本重叠,需针对主图和顶部边际图的x轴标签设置旋转:
方式1:批量设置所有相关轴的文本
import seaborn as sns import matplotlib.pyplot as plt g = sns.JointGrid(x='u', y='t', data=tdata) g.plot(sns.scatterplot, sns.histplot) # 旋转45度,可根据需求调整角度 plt.setp(g.ax_joint.get_xticklabels(), rotation=45) plt.setp(g.ax_marg_x.get_xticklabels(), rotation=45) plt.show()
方式2:单独设置每个轴的文本
g = sns.JointGrid(x='u', y='t', data=tdata) g.plot(sns.scatterplot, sns.histplot) # 主图x轴文本旋转 g.ax_joint.tick_params(axis='x', labelrotation=45) # 顶部边际图x轴文本旋转 g.ax_marg_x.tick_params(axis='x', labelrotation=45) plt.show()
如果只需要主图的x轴文本旋转,只操作g.ax_joint即可。
二、解决plt.figure尺寸设置无效的问题
plt.figure()会创建新的画布,但JointGrid会自动生成专属画布,所以之前的设置不会生效。有两种可行方案:
方案1:创建JointGrid时直接指定尺寸
在JointGrid的构造参数中加入figsize,直接定义画布大小:
g = sns.JointGrid(x='u', y='t', data=tdata, figsize=(10, 8)) g.plot(sns.scatterplot, sns.histplot) plt.show()
方案2:创建后修改画布尺寸
如果已经初始化了JointGrid,可以通过其fig属性调整尺寸:
g = sns.JointGrid(x='u', y='t', data=tdata) g.plot(sns.scatterplot, sns.histplot) # 设置画布为10x8英寸 g.fig.set_size_inches(10, 8) plt.show()
内容的提问来源于stack exchange,提问作者Jason.Z
相关产品推荐
相关产品推荐

