Python 3d 图 - 以轴为中心

标签 python matplotlib plot 3d plotly

我正在尝试在 python 中制作一个 3d 绘图,轴位于中间,如下所示:

enter image description here

我尝试过使用 matplotlib 和plotly 但没有成功。只是为了说明我的问题,我不想要像下图这样的图,您可以在其中看到轴位于数据之外:

enter image description here

最佳答案

我也找不到办法做到这一点,所以这是我的解决办法:

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()

enter image description here

关于Python 3d 图 - 以轴为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51018584/

相关文章:

按属性比较两个无序列表的 Pythonic 方法

python - 如何使用多个自定义值标记条形

matlab - 在 MATLAB 中绘制许多未连接的线

python - Cython/Numba 编译函数可以改进 numpy.max(numpy.abs(a-b)) 吗?

python - AttributeError,我在这里做错了什么?

python - Tornado POST 405 : Method Not Allowed

matplotlib - Gnuplot:在 Y 轴上绘制直方图

python - 在 Matplotlib 寄生虫图中旋转 x 轴标签

python - 在一系列时间索引上绘制 DataFrame

R:图例表达式如何在两个值之间添加逗号以及如何抑制科学记数法