我试图用一些数据点(x,y,z,半径)绘制散点图,这是我到目前为止的结果:
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()
如何改进此图,使x和y标签与控制点不重叠?
是否有可能在这个3D图中制作球体而不是区域?
1条答案
按热度按时间c0vxltue1#
您可以创建使用球体而不是圆形标记的打印,方法是在每个位置绘制一个标记,如here所述。下面是一个例子:
要解决标签定位问题,请尝试添加第二行,如here所述。