带有标签和球体的散点图3D [英] Scatter Plot 3D with labels and spheres

查看:144
本文介绍了带有标签和球体的散点图3D的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to make a scatter plot with some data points (x,y,z,radius) and this is my result up to now:

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标签与抽纹不重叠?

How can I improve this plot in order to have no overlap of the x- and y-labels with the tics?

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

And it there a possibility to make spheres instead of areas in this 3D-plot?

推荐答案

您可以按照

You can create a plot that uses spheres instead of circle markers by drawing one at each location as described here. Here's an example:

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()

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

To fix the label positioning problem try adding a second line as described here.

这篇关于带有标签和球体的散点图3D的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆