gpt4 book ai didi

python - 在 matplotlib 中绘制表面(球体),以 0,0,0 以外的坐标为中心

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:47 25 4
gpt4 key购买 nike

我需要绘制透明度、半径和 x、y、z 坐标不同的球体。

我能够绘制球体并输入透明度(alpha)值和半径值(我已将其更改为随机数以简化本示例),但我无法弄清楚如何居中围绕 0,0,0 以外坐标的球体。

如何使用 python matplotlib 库将球体围绕 0,0,0 以外的坐标居中?

这是我到目前为止所拥有的;

from __future__ import print_function
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
import numpy as np
import time , random

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.set_xlim3d([100.0, 0.0])
ax.set_xlabel('X')
ax.set_ylim3d([0.0, 100.0])
ax.set_ylabel('Y')
ax.set_zlim3d([0.0, 100.0])
ax.set_zlabel('Z')
ax.set_title('pFC-amygdala-insula')

wframe = None
tstart = time.time()
for num in range(100):
oldcol = wframe
r = random.randint(1, 20)
alpha = 1.0 / random.randint(25, 100)
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))
sphere = ax.plot_surface(x, y, z, color='b', alpha=alpha)
if oldcol is not None: ax.collections.remove(oldcol)
plt.pause(.001)

print('Duration: %f' % (100 / (time.time() - tstart)))

最佳答案

只需将中心坐标添加到 x、y 和 z 即可。

x = r * np.outer(np.cos(u), np.sin(v)) + center_x
y = r * np.outer(np.sin(u), np.sin(v)) + center_y
z = r * np.outer(np.ones(np.size(u)), np.cos(v)) + center_z

关于python - 在 matplotlib 中绘制表面(球体),以 0,0,0 以外的坐标为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40985148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com