如何移除Matplotlib 3D运动追踪图周围的多余2D坐标轴?
如何移除Matplotlib 3D运动追踪图周围的多余2D坐标轴?
我看了你的代码,发现多余的2D坐标轴是因为重复创建子图导致的!
你最初用这行代码创建了两个默认的2D子图:
fig, (ax, ax_dist) = plt.subplots(1, 2, figsize=(14, 6))
紧接着又用ax = fig.add_subplot(121, projection='3d')在同一个位置(第一个子图区域)重新创建了一个3D子图,但原来的2D子图并没有被删除,它的坐标轴就留在了3D图的周围,形成了你看到的双重轴效果。
解决方案:直接创建目标子图,避免重复
把原来的子图创建代码替换成下面的写法,一次性创建正确的3D和2D子图,就不会有重叠的坐标轴了:
# 替换原来的前两行子图创建代码 fig = plt.figure(figsize=(14, 6)) # 第一个子图直接设为3D投影 ax = fig.add_subplot(1, 2, 1, projection='3d') # 第二个子图保持2D类型 ax_dist = fig.add_subplot(1, 2, 2)
如果你更习惯用plt.subplots的写法,也可以这样调整(需要手动删除多余的2D子图):
fig, (ax, ax_dist) = plt.subplots(1, 2, figsize=(14, 6)) # 删除默认创建的第一个2D子图 fig.delaxes(ax) # 重新创建3D子图放在第一个位置 ax = fig.add_subplot(1, 2, 1, projection='3d')
额外小优化:简化网格设置
我注意到你代码里的网格设置有点矛盾:先把三个轴的grid线宽设为0,之后又调用ax.grid(True)。如果你的需求是隐藏3D图的网格,直接用ax.grid(False)就可以了,不用去修改轴的内部参数,代码更简洁易懂。
修改后,你的3D运动追踪图就只会显示自身的3D坐标轴,不会再出现多余的2D轴啦!
备注:内容来源于stack exchange,提问作者Renyun Zhang
相关产品推荐
相关产品推荐

