gpt4 book ai didi

python - 带有标签和球体的 3D 散点图

转载 作者:太空狗 更新时间:2023-10-30 00:50:09 28 4
gpt4 key购买 nike

我正在尝试用一些数据点 (x,y,z,radius) 绘制散点图,这是我到目前为止的结果:

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

x = np.random.rand(20)
y = np.random.rand(20)
z = np.random.rand(20)
r = np.random.rand(20)


plt.rc('text', usetex=True)
plt.rcParams['text.latex.preamble']=[r"\usepackage{amsmath}"]

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

ax.scatter(x, y, z, s=np.pi*r**2*100, c='blue', alpha=0.75)

ax.set_xlabel(r'$x$ $\left[\frac{\text{Mpc}}{h}\right]$')
ax.set_ylabel(r'$y$ $\left[\frac{\text{Mpc}}{h}\right]$')
ax.set_zlabel(r'$z$ $\left[\frac{\text{Mpc}}{h}\right]$')

#plt.savefig('spheres.png')

plt.show()

http://www.file-upload.net/download-9033814/spheres.png.html

我如何改进此图才能使 x 和 y 标签与抽动不重叠?

是否有可能在此 3D 绘图中制作球体而不是区域?

最佳答案

您可以创建一个使用球体而不是圆形标记的图,方法是按照描述在每个位置绘制一个球体 here .这是一个例子:

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

def drawSphere(xCenter, yCenter, zCenter, r):
#draw sphere
u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]
x=np.cos(u)*np.sin(v)
y=np.sin(u)*np.sin(v)
z=np.cos(v)
# shift and scale sphere
x = r*x + xCenter
y = r*y + yCenter
z = r*z + zCenter
return (x,y,z)


x = 10*np.random.rand(20)
y = 10*np.random.rand(20)
z = 10*np.random.rand(20)
r = np.random.rand(20)


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

# draw a sphere for each data point
for (xi,yi,zi,ri) in zip(x,y,z,r):
(xs,ys,zs) = drawSphere(xi,yi,zi,ri)
ax.plot_wireframe(xs, ys, zs, color="r")


plt.show()

spheres in 3D plot

要解决标签定位问题,请尝试添加第二行,如 here 所述.

关于python - 带有标签和球体的 3D 散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24123659/

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