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

如何为Matplotlib的contourf填充等高线图设置任意横纵比例

你当前代码没有生效的核心原因有两个:

  1. plt.figure(figsize=(8,2)) 调用顺序错误:必须在绘图命令前创建指定尺寸的画布,你先执行contourf再新建画布,相当于绘图内容落到了默认画布上,新建的8:2画布没有任何绘图内容。
  2. 如果你要独立于画布尺寸固定contourf的横纵比例,需要直接调整坐标轴的纵横比参数,而非仅调整画布大小。

方案1:修正画布设置顺序即可生效

import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
import pandas as pd
import math

rm = pd.read_excel("test_3d.xlsx", header = None)

# 计算噪声最小值
rec = np.shape(rm)

# 生成网格
X = np.arange(1,rec[1]+1,1)
Y = np.arange(1,rec[0]+1,1)
x , y = np.meshgrid(X,Y)

# 绘图:先创建指定尺寸画布
plt.clf() 
plt.figure(figsize=(8,2)) # 移到contourf绘图命令之前
con = plt.contourf(x,y,rm, cmap=cm.jet)
plt.tight_layout()
plt.title('2457MHz')
plt.show()

方案2:直接固定坐标轴横纵比(不受画布大小影响)

如果需要不管画布尺寸怎么调整,contourf的横纵轴显示比例都固定,用ax.set_aspect方法直接作用于绘图坐标轴:

# 其余前置代码和上面一致
plt.clf()
fig, ax = plt.subplots(figsize=(8,2))
con = ax.contourf(x,y,rm, cmap=cm.jet)
# 手动设置横纵比例:数值为 纵轴单位长度/横轴单位长度 的比值
# 比如希望横轴1单位对应纵轴0.25单位(横轴宽度是纵轴的4倍)就填0.25,按需调整数值即可
ax.set_aspect(0.25)
plt.tight_layout()
plt.title('2457MHz')
plt.show()

内容的提问来源于stack exchange,提问作者Denny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:57:00