gpt4 book ai didi

python - 从 matplotlib 中的 3D 散点图中提取数据

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:00 27 4
gpt4 key购买 nike

我正在编写用于在 matplotlib 中制作 3D 散点图的界面,我想从 python 脚本访问数据。对于 2D 散点图,我知道过程是:

import numpy as np
from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
h = ax.scatter(x,y,c=c,s=15,vmin=0,vmax=1,cmap='hot')
data = h.get_offsets()

通过上面的代码,我知道数据将是一个 (N,2) numpy 数组,其中填充了我的 (x,y) 数据。当我尝试对 3D 数据执行相同的操作时:

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

fig = plt.figure()
ax = Axes3D(fig)
h = ax.scatter(x,y,z,c=c,s=15,cmap='hot',vmin=0,vmax=1)
data = h.get_offsets()

生成的 data 变量仍然是 (N,2) numpy 数组,而不是 (N,3) numpy 数组。 data 的内容不再匹配我的任何输入数据;我假设 data 填充了我的 3D 数据的 2D 投影,但我真的很想访问用于生成散点图的 3D 数据。这可能吗?

最佳答案

的确,通过get_offsets得到的坐标就是投影坐标。原始坐标隐藏在 mpl_toolkits.mplot3d.art3d.Path3DCollection 中,由 scatter 在三维轴中返回。您将从 ._offsets3d 属性中获取原始坐标。 (这是一个“私有(private)”属性,但不幸的是这是检索此信息的唯一方法。)

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

fig = plt.figure()
ax = Axes3D(fig)
x = [1,2,3,4]
y = [1,3,3,5]
z = [10,20,30,40]
c= [1,2,3,1]
scatter = ax.scatter(x,y,z,c=c,s=15,cmap='hot',vmin=0,vmax=1)
data = np.array(scatter._offsets3d).T
print(scatter) # prints mpl_toolkits.mplot3d.art3d.Path3DCollection
print(data)

# prints
#
# [[ 1. 1. 10.]
# [ 2. 3. 20.]
# [ 3. 3. 30.]
# [ 4. 5. 40.]]

关于python - 从 matplotlib 中的 3D 散点图中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51716696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com