python - Python 3d 绘图 - 轴居中
问题描述
我正在尝试在 python 中制作一个中间有轴的 3d 图,如下所示:
我已经尝试过使用 matplotlib 并没有成功。只是为了说明我的问题,我不想要如下图所示的图,您可以在其中看到轴位于数据之外:
解决方案
我也找不到这样做的方法,所以这是我的解决方法:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.set_aspect('equal')
# Draw centered axes
val = [1,0,0]
labels = ['x', 'y', 'z']
colors = ['r', 'g', 'b']
for v in range(3):
x = [val[v-0], -val[v-0]]
y = [val[v-1], -val[v-1]]
z = [val[v-2], -val[v-2]]
ax.plot(x,y,z,'k-', linewidth=1)
ax.text(val[v-0], val[v-1], val[v-2], labels[v], color=colors[v], fontsize=20)
# Hide everything else
# Hide axes ticks
ax.set_xticks([])
ax.set_yticks([])
ax.set_zticks([])
# make the panes transparent
ax.xaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.yaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
ax.zaxis.set_pane_color((1.0, 1.0, 1.0, 0.0))
# Hide box axes
ax._axis3don = False
# Expand to remove white space
ax.set_xlim(np.array([-1,1])*.57)
ax.set_ylim(np.array([-1,1])*.57)
ax.set_zlim(np.array([-1,1])*.57)
plt.tight_layout()
plt.show()
推荐阅读
- reactjs - 使 api 请求在反应应用程序中从同一网络上的另一台计算机工作
- python - Python sqlite3 连接
- python - 如何使用 rng 值作为 time.sleep 的值
- express - Webpack 热模块替换 (HMR) 工作,但浏览器缓存并立即执行所有更新
- google-sheets - 如何根据字符串匹配对谷歌工作表列进行排序?
- vue.js - vue 路由器总是带我回到登录
- java - 用模式中某些字符的可变数量在Java中构造正则表达式
- c++ - 我的值大于无符号整数的范围
- html - ASPX 页面未在任何浏览器中显示
- c# - 如何使用 C Sharp 创建谷歌电子表格?