如何调整Matplotlib图形大小并缩小视图?修改xlim/ylim后图形被放大
解决Matplotlib图形缩放与尺寸调整问题
问题根源
你遇到的问题主要来自两个错误设置:
- 图形尺寸设置时机错误:
plt.rcParams["figure.figsize"]放在绘图代码之后不会生效,且你设置的(20,3)是宽高比悬殊的矩形,直接把盘状图形拉扁变形,视觉上呈现出“放大”局部的效果。 - 坐标轴范围与数据不匹配:如果你的
x、y数据实际区间远小于[-3,3],强行设置该范围会让盘状图形在画布中占比缩小,但结合扁长的画布,反而造成图形被拉伸放大的错觉。
修正步骤
- 提前设置合理的画布尺寸:把
plt.rcParams["figure.figsize"]移到所有绘图代码最前面,并且设置为正方形尺寸(比如(8,8)),匹配盘状图形的比例:plt.rcParams["figure.figsize"] = (8, 8) # 先设置画布,再执行绘图逻辑 r,p = np.meshgrid(ff.x,ff.y,sparse=True) ux=ff.uu[0,...] uy=ff.uu[1,...] rho=ff.rho plt.contourf(x,y,np.log(rho),50,cmap='viridis') cb=plt.colorbar() cb.set_label('Log Gas Density') plt.ylabel('AU/1e5') plt.xlabel('AU/1e5') - 匹配坐标轴范围与数据实际区间:先打印数据的真实范围,再设置对应的
xlim和ylim:# 先查看数据区间,再调整范围 print("x范围:", x.min(), x.max()) print("y范围:", y.min(), y.max()) # 示例:如果数据实际在[-0.5,0.5]区间,就设置对应范围 plt.xlim([-0.5, 0.5]) plt.ylim([-0.5, 0.5]) - 强制坐标轴比例一致:添加
plt.axis('equal'),确保x轴和y轴的缩放比例相同,彻底避免盘状图形被拉伸变形:plt.axis('equal') plt.title("Density") plt.show()
完整修正代码
plt.rcParams["figure.figsize"] = (8, 8) r,p = np.meshgrid(ff.x,ff.y,sparse=True) ux=ff.uu[0,...] uy=ff.uu[1,...] rho=ff.rho plt.contourf(x,y,np.log(rho),50,cmap='viridis') cb=plt.colorbar() cb.set_label('Log Gas Density') plt.ylabel('AU/1e5') plt.xlabel('AU/1e5') # 查看数据真实范围后再设置坐标轴区间 print("x范围:", x.min(), x.max()) print("y范围:", y.min(), y.max()) plt.xlim([-0.5, 0.5]) plt.ylim([-0.5, 0.5]) plt.axis('equal') plt.title("Density") plt.show()
内容的提问来源于stack exchange,提问作者John Meftah
相关产品推荐
相关产品推荐

