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

如何调整Matplotlib 3D绘图的轴纵横比以延长Y轴?

调整Matplotlib 3D图的轴纵横比,生成长方体形态

要让3D图的Y轴视觉上更长,你可以用Matplotlib 3.3及以上版本提供的set_box_aspect()方法,直接指定三个轴的比例,轻松把默认立方体改成想要的长方体。

具体操作

在你的绘图代码最后,添加一行设置轴比例的代码:

# 设置X、Y、Z轴的视觉相对比例,可根据需求调整数值
ax.set_box_aspect([1, 10, 1])

修改后的完整代码

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np


N = 1000

bm = pd.DataFrame(
    index=pd.bdate_range(start='2012-01-01', periods=N, freq='B'), 
    data={x: np.random.randn(N) for x in range(1, 11)}
)

# 模拟部分零值
bm = pd.DataFrame(index=bm.index, columns=bm.columns, data=np.where(np.abs(bm.values) < 0.02, 0, bm.values))

# 将零值替换为Nan,避免绘制它们
bm = bm.replace({0: np.nan})

# 展开DataFrame
flat_bm = bm.reset_index(drop=True).unstack()  # 丢弃日期,替换为整数索引
x = flat_bm.index.get_level_values(0)
y = flat_bm.index.get_level_values(1)
z = flat_bm.values


# 创建绘图对象
fig = plt.figure(figsize = (15,10))
ax = plt.axes(projection ='3d')

# 绘制散点图
ax.scatter(x, y, z, '.', c=flat_bm.values, cmap='Reds')

# 设置轴的视觉比例:[X轴比例, Y轴比例, Z轴比例]
ax.set_box_aspect([1, 10, 1])

plt.show()

补充说明

  • set_box_aspect()的参数是三元组[aspect_x, aspect_y, aspect_z],数值代表三个轴的相对长度比例。比如示例中的[1,10,1]表示Y轴长度是X、Z轴的10倍,你可以根据需求自由修改这些数值。
  • 如果你的Matplotlib版本低于3.3,建议升级到最新版本;若无法升级,可手动调整3D投影矩阵,但操作繁琐,远不如set_box_aspect()直观好用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 18:20:00