使用python绘制串行端口3d在3d坐标系上指向数据

时间:2017-05-10 06:12:39

标签: python matplotlib plot 3d

我在谷歌搜索过这个,但是实时找到了2d点的解决方案。我怎样才能实现3d点流。

在这里,我应该可以为绘图添加新点。

我试过了this,它只是绘制了一系列数据。如何更新?

1 个答案:

答案 0 :(得分:1)

您可以在交互模式下绘图,例如以下内容不断添加新点

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

plt.ion()
plt.show()

x = np.linspace(0.,np.pi*4.,100)
ax.set_xlim([0.,13.])
ax.set_ylim([-1.5,1.5])
ax.set_zlim([-1.5,1.5])
for i in x:
    ax.scatter(i, np.sin(i), np.cos(i))
    print(i)
    plt.pause(0.01)

更新:添加标签示例

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

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

plt.ion()
plt.show()

lsp = np.linspace(0.,np.pi*4.,100)
ax.set_xlim([0.,13.])
ax.set_ylim([-1.5,1.5])
ax.set_zlim([-1.5,1.5])
for i, x in enumerate(lsp):
    y = np.sin(x)
    z = np.cos(x)
    ax.scatter(x, y, z)
    if i%10 == 0:
        ax.text(x, y, z, str(np.round(x,3))+", "
                        +str(np.round(y,3))+", "
                        +str(np.round(z,3)))
    plt.pause(0.01)