matplotlib 绘制半径为R的球体

mmvthczy  于 2023-05-18  发布在  其他
关注(0)|答案(1)|浏览(127)

我们怎样才能制造以给定坐标(x,y,z)为中心的半径为R的球体?就像如果有10组坐标用于球体的中心和相应的10个不同的半径值。我们如何在python中绘制它?在Python中有没有什么方法可以做到这一点,就像在MATLAB中一样,这可以使用surf命令来完成。在Python中,我们如何做到这一点?

ghhkc1vu

ghhkc1vu1#

这会解决你的问题

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

list_center = [(1,2,3),(-4,-5,6), (5,5,6)]
list_radius = [1,2,1]

def plt_sphere(list_center, list_radius):
  for c, r in zip(list_center, list_radius):
    ax = fig.add_subplot(projection='3d')
    
    # draw sphere
    u, v = np.mgrid[0:2*np.pi:50j, 0:np.pi:50j]
    x = r*np.cos(u)*np.sin(v)
    y = r*np.sin(u)*np.sin(v)
    z = r*np.cos(v)

    ax.plot_surface(x-c[0], y-c[1], z-c[2], color=np.random.choice(['g','b']), alpha=0.5*np.random.random()+0.5)
fig = plt.figure()
plt_sphere(list_center, list_radius)

相关问题