pyplot如何在同一轴上以3D方式绘制散点图和颤动图?

时间:2018-06-25 18:38:58

标签: python numpy matplotlib

我想打印点的散点图并添加其主要方向。

因此,我有一个要显示的[x,y,z]到[u,v,w]的矢量数组,以及另一个3D点数组。

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt


fig = plt.figure()
ax = fig.gca(projection='3d')
ax.quiver(x, y, z, u, v, w, length=0.1, normalize=False)
# if i stop here I see the quiver
ax.scatter(X[:, 0], X[:, 1], X[:, 2])
plt.show() # here I see only the scatter

2 个答案:

答案 0 :(得分:1)

mplot3d库是一个简单的绘图,它模拟3d绘图的形状,而不是实际绘制它们。结果,您不能在同一轴上有两个清晰的图。通过绘制两个稍微向一侧移动的曲面,您可以清楚地看到这一点。它绘制了其中一个,然后绘制了另一个,因此深度将被弄乱。 话虽如此,这似乎不是您的问题。您尚未提供有关数据的任何信息,但是对于我制作的一个虚拟案例,该图看起来很合理: 从mpl_toolkits.mplot3d导入Axes3D

import matplotlib.pyplot as plt
fig = plt.figure();ax = fig.gca(projection='3d')
ax.quiver([0,0,0], [0,0,0], [0,0,0], [5,0,0], [0,5,0], [0,0,5], length=0.1, normalize=False)
ax.scatter([0,1,2,3], [1,2,1,2],[-1,0,1,2])

enter image description here 尝试使用此代码,看看是否得到相同的结果? 可能是您的颤动图比散点图的范围小得多,因此您在视觉上会丢失它。

答案 1 :(得分:0)

在这里3D plot看看,这正是您想要的。