如何调整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
相关产品推荐
相关产品推荐

