You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调整Matplotlib图形大小并缩小视图?修改xlim/ylim后图形被放大

解决Matplotlib图形缩放与尺寸调整问题

问题根源

你遇到的问题主要来自两个错误设置:

  1. 图形尺寸设置时机错误:plt.rcParams["figure.figsize"]放在绘图代码之后不会生效,且你设置的(20,3)是宽高比悬殊的矩形,直接把盘状图形拉扁变形,视觉上呈现出“放大”局部的效果。
  2. 坐标轴范围与数据不匹配:如果你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 16:20:45