我正在使用matplotlib构建一个三维散点图,但无法使所生成的图形具有所有三个轴的共同原点。我怎么能这样做?
我的代码(到目前为止),我没有实现轴规范的任何定义,因为我对Python很新:
from mpl_toolkits.mplot3d.axes3d import Axes3D
import matplotlib.pyplot as plt
# imports specific to the plots in this example
import numpy as np
from matplotlib import cm
from mpl_toolkits.mplot3d.axes3d import get_test_data
def randrange(n, vmin, vmax):
return (vmax-vmin)*np.random.rand(n) + vmin
# Same as wide as it is tall.
fig = plt.figure(figsize=plt.figaspect(1.0))
ax = fig.add_subplot(111, projection='3d')
n = 512
xs = np.random.randint(0, 10, size=n)
ys = np.random.randint(0, 10, size=n)
zs = np.random.randint(0, 10, size=n)
colors = np.random.randint(0, 10, size=n)
scat = ax.scatter(xs, ys, zs, c=colors, marker='o')
ax.set_xlabel('X Label')
ax.set_ylabel('Y Label')
ax.set_zlabel('Z Label')
fig.colorbar(scat, shrink=0.5, aspect=10)
plt.show()
答案 0 :(得分:0)
可能你的意思如下(来自Mathematica):
目前我只能绘制一些以(0,0,0)为中心的线:
xline=((min(data[:,0]),max(data[:,0])),(0,0),(0,0))
ax.plot(xline[0],xline[1],xline[2],'grey')
yline=((0,0),(min(data[:,1]),max(data[:,1])),(0,0))
ax.plot(yline[0],yline[1],yline[2],'grey')
zline=((0,0),(0,0),(min(data[:,2]),max(data[:,2])))
ax.plot(zline[0],zline[1],zline[2],'grey')
结果如下:
答案 1 :(得分:0)
如果你放行
ax.view_init(30,220)
之前
plt.show()
你应该得到你想要的x-y飞机。不知道如何将该平面移动到z = 0。