【问题标题】:Good-looking sphere in MatplotlibMatplotlib 中好看的球体
【发布时间】:2022-01-23 08:17:40
【问题描述】:

我一直在尝试使用 Matplotlib 绘制一个带有一些曲线的 (3d) 球体,但到目前为止我的结果令人失望。

我尝试了几种 RGB 颜色、不透明度和颜色图,但输出相似。

我怎么能做这样的布洛赫球?这正是我正在寻找的。​​p>

提前致谢!

【问题讨论】:

  • 欢迎来到stackoverflow!我认为在您的问题中添加一些代码是一个好主意 - 这将有助于我们重现您目前获得的领域,并向人们展示您为解决问题做出了真诚的努力
  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: python matplotlib 3d


【解决方案1】:

要获得与您所展示的更相似的 3d 图,您可以沿每个轴添加一些圆形曲线和直线。例如:

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

# Make data
r = 10
u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = r * np.outer(np.cos(u), np.sin(v))
y = r * np.outer(np.sin(u), np.sin(v))
z = r * np.outer(np.ones(np.size(u)), np.cos(v))

# Plot the surface
ax.plot_surface(x, y, z, color='linen', alpha=0.5)

# plot circular curves over the surface
theta = np.linspace(0, 2 * np.pi, 100)
z = np.zeros(100)
x = r * np.sin(theta)
y = r * np.cos(theta)

ax.plot(x, y, z, color='black', alpha=0.75)
ax.plot(z, x, y, color='black', alpha=0.75)

## add axis lines
zeros = np.zeros(1000)
line = np.linspace(-10,10,1000)

ax.plot(line, zeros, zeros, color='black', alpha=0.75)
ax.plot(zeros, line, zeros, color='black', alpha=0.75)
ax.plot(zeros, zeros, line, color='black', alpha=0.75)

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多