首页 > 解决方案 > pyplot 如何在同一轴上绘制 3D 散点图和颤动图?

问题描述

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

所以我有一个要显示的向量数组(3D)[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

标签: pythonnumpymatplotlib

解决方案


mplot3d库是一个简单的绘图,它模拟 3d 绘图的形状,而不是实际绘制它们。因此,您不能在同一轴上有两个清晰的图。您可以通过绘制两个稍微向一侧移动的表面来清楚地看到这一点。它绘制其中一个,然后绘制另一个,因此深度将全部混乱。说起来,这似乎不是你的问题。您没有提供有关您的数据的任何信息,但对于我制作的虚拟案例,情节似乎是合理的: from mpl_toolkits.mplot3d import 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])

在此处输入图像描述 试试这段代码,看看你是否得到相同的结果?可能是你的箭袋图比散点图的范围小得多,所以你在视觉上错过了它。


推荐阅读