施工后matplotlib三维散点图变化数据

67up9zun  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(89)

我有一个三维散点图,需要更新。但是,没有变量,让我解决单个数据点。

self.fig = plt.figure(figsize=(8, 8))
self.ax = self.fig.add_subplot(111, projection='3d')
data_point = self.ax.scatter(xs=0, ys=0, zs=0)

我想改变x,y,z坐标,但只使用set_3d_properties(1,[0])改变了z坐标。其他属性,如颜色,可以很容易地改变。
这个程序应该是一个动态模拟。
我试着搜索setter函数来处理这些坐标set_offsets, set_data,但是only promising one (an attribute) _offsets3d给了我一个以IndexError: invalid index to scalar variable.结尾的非常长的错误消息
要重现的代码:

import matplotlib
matplotlib.use("TkAgg")
import matplotlib.pyplot as plt

plt.ion()
fig = plt.figure(figsize=(8, 8))

ax = fig.add_subplot(111, projection='3d')
size = 6
ax.set_xlim(-(size / 2), size / 2)
ax.set_ylim(-(size / 2), size / 2)
ax.set_zlim(-(size / 2), size / 2)
datapoint = ax.scatter(0,0,0)

datapoint.set_data([1,1]) # supposed to work, doesn't work
datapoint.set_3d_properties(0,[5]) # works, changes the z coordinate

plt.show()
iqjalb3h

iqjalb3h1#

不完全是答案,但我希望这能帮助OP
1.创建散点图

In [20]: fig, ax = plt.subplots(layout='tight', subplot_kw=dict(projection="3d"))
    
In [21]: sp = ax.scatter((1,3), (5,2), (3,10))

1.研究(私有)._offsets3d属性

In [22]: type(sp._offsets3d)
Out[22]: tuple
 
In [23]: [type(offset) for offset in sp._offsets3d]
Out[23]: [numpy.ma.core.MaskedArray, numpy.ma.core.MaskedArray, numpy.ndarray]

1.查看其内容

In [24]: sp._offsets3d[0]
Out[24]: 
masked_array(data=[1.0, 3.0],
             mask=[False, False],
       fill_value=1e+20)

In [25]: sp._offsets3d[2]
Out[25]: array([ 3, 10])

我已经检查过,例如,sp._offsets3d[0][] = 9可用于更改偏移,而不会引发任何错误。
我不知道坐标更新后如何触发散点云的重新绘制。

相关问题