首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中绘制球形线段?

如何在Python中绘制球形线段?
EN

Stack Overflow用户
提问于 2018-02-20 21:08:33
回答 1查看 858关注 0票数 2

如何绘制球形线段,特别是Python中的球体“切片”?

我知道如何绘制球面

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = 10 * np.outer(np.cos(u), np.sin(v))
y = 10 * np.outer(np.sin(u), np.sin(v))
z = 10 * np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z,  rstride=4, cstride=4, color='b')
plt.show()

或者该代码的一些变体,但我正在努力仅绘制球体的一部分,从而生成如下所示的图像:

https://en.wikipedia.org/wiki/Spherical_segment#/media/File:LaoHaiKugelschicht1.png

如果我通过操纵u和v的定义来改变上面给出的代码,例如:

u = np.linspace(0, 2 * np.pi, 20)
v = np.linspace(0, np.pi, 20)

球体仍然作为一个整体呈现,但分辨率非常低。更改linspace范围的起始点似乎不会改变任何事情。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 21:31:55

我想出了一些对我有效的方法。这就是了:

q = 0.5  # defines upper starting point of the spherical segment
p = 0.8  # defines ending point of the spherical segment as ratio


u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(q, p * np.pi, p * 100)
x = r * np.outer(np.cos(u), np.sin(v)) + x_0
y = r * np.outer(np.sin(u), np.sin(v)) + y_0
z = r * np.outer(np.ones(np.size(u)), np.cos(v)) + z_0
ax.plot_surface(x, y, z, color='b')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48886028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档