如何从Seaborn已有绘图中获取轴限制并进行调整
获取Seaborn图表轴限制并调整的方法
Seaborn的regplot和lmplot返回的对象类型不同,获取轴限制的方式也不一样,下面分别说明:
1. 处理regplot生成的图表
regplot直接返回Matplotlib Axes对象,可以直接调用轴对象的方法获取和修改轴限制:
示例代码
import seaborn as sns import matplotlib.pyplot as plt # 绘制regplot图表 g = sns.regplot(x=x, y=y, data=data, ci=ci, scatter_kws={"s": 200,'alpha':0.1}, line_kws={'color':'green'}) # 获取当前x轴和y轴的限制 x_min, x_max = g.get_xlim() y_min, y_max = g.get_ylim() # 调整轴最大值(比如提高10%) new_x_max = x_max * 1.1 new_y_max = y_max * 1.1 # 设置新的轴限制 g.set_xlim(x_min, new_x_max) g.set_ylim(y_min, new_y_max) plt.show()
2. 处理lmplot生成的图表
lmplot返回的是FacetGrid对象,需要先获取其内部的Axes对象,再操作轴限制:
示例代码
import seaborn as sns import matplotlib.pyplot as plt # 绘制lmplot图表 g = sns.lmplot(x=x,y=y,data=data,fit_reg=False,legend=False,height=8, aspect=1.7, scatter_kws={"s": 200}) # 获取FacetGrid中的Axes对象(单图表时取[0,0]位置) ax = g.axes[0, 0] # 获取当前轴限制 x_min, x_max = ax.get_xlim() y_min, y_max = ax.get_ylim() # 调整轴最大值 new_x_max = x_max * 1.1 new_y_max = y_max * 1.1 # 设置新的轴限制 ax.set_xlim(x_min, new_x_max) ax.set_ylim(y_min, new_y_max) plt.show()
注意点
- 如果你的lmplot是多子图(比如用了
col或row参数),需要循环遍历g.axes里的每个Axes对象来批量调整。 - 调整完轴限制后,记得调用
plt.show()来展示修改后的图表。
内容的提问来源于stack exchange,提问作者roudan
相关产品推荐
相关产品推荐

