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

如何将Matplotlib 3D图像的坐标轴修改为带箭头的x/y/z轴样式

实现方案

两种实现思路均可行:既可以通过在坐标轴末端叠加箭头营造对应视觉效果,也可以修改3D绘图边框参数实现,其中叠加箭头的方案实现更简单,兼容性更强,不需要调整matplotlib底层参数。

完整可运行代码

import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# generate sample points and straight line
z = np.repeat(0, 100) 
x = np.repeat(1.0, 100) 
y = np.linspace(start=3.0, stop=6.0, num=100) 
ax.plot(x, y, z, c='red') # draw straight line
ax.view_init(45, -150) # angle to show

# set axes limits and labels
ax.set_xlabel(r"$x$"); ax.set_ylabel(r"$y$"); ax.set_zlabel(r"$z$")
ax.set_xlim(0,1.1) ;ax.set_ylim(6,3) ;ax.set_zlim(0,1.75)

#  Remove tick marks
ax.set_xticks([0,0.25,0.5,0.75,1]) ; ax.set_xticklabels(['0','1','2','4','T'])
ax.set_yticks([6.0,5.5,5,4.5,4.0,3.5,3]) ; ax.set_yticklabels(["","","","","","",""])
ax.set_zticks([1.75,1.25,0.75,0.25]) ; ax.set_zticklabels(['','','',''])

# 新增修改内容开始
# 隐藏原生坐标轴脊线,消除默认方框边框
ax.w_xaxis.line.set_color('none')
ax.w_yaxis.line.set_color('none')
ax.w_zaxis.line.set_color('none')
# 关闭背景网格
ax.grid(False)
# 把所有轴面板都设为白色
ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))
ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))

# 绘制三个带箭头的坐标轴
# x轴箭头:沿x轴正方向延伸到上限
ax.quiver(0, 3, 0, 1.1, 0, 0, color='black', arrow_length_ratio=0.05, linewidth=1.5)
# y轴箭头:沿y轴正方向延伸到上限
ax.quiver(0, 3, 0, 0, 3, 0, color='black', arrow_length_ratio=0.05, linewidth=1.5)
# z轴箭头:沿z轴正方向延伸到上限
ax.quiver(0, 3, 0, 0, 0, 1.75, color='black', arrow_length_ratio=0.05, linewidth=1.5)
# 新增修改内容结束

#plt.savefig("sample.png", format="png",dpi=400) # save image 
plt.tight_layout()
plt.show()

核心修改说明

  • 修正了原代码中ax.set_zticks行缺少分隔符的语法错误
  • 隐藏了三个坐标轴的默认脊线,消除原生的方框式边框
  • 补充y、z轴的面板背景设置为全白,和x轴保持一致
  • 调用ax.quiver()接口分别在x、y、z三个坐标轴的正方向末端绘制箭头,可通过arrow_length_ratio参数调整箭头大小,linewidth调整坐标轴粗细

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:09:04