Построение трехмерного облака точек

введите сюда описание изображения

Как можно построить такое же трехмерное облако точек синего цвета на python? Проблема в алгоритме создания точек. Как сгенерировать такие же точки для их последующего отображения? Под такими же я подразумеваю трехмерное круглое сечение с рандомными прерываниями.


Ответы (1 шт):

Автор решения: Игорь Игоряныч
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits import mplot3d


np.random.seed(16)

fig = plt.figure(figsize=(10, 7))
ax = plt.axes(projection='3d');

x = 2*np.random.random(100) - 1
y = x + np.random.randn(100) * 0.2
z = np.sqrt(3 - (x**2 + y**2))

ax.plot3D(np.sort(x), np.sort(y), np.sqrt(3 - (np.sort(x)**2 + np.sort(y)**2)), 'orange')
ax.scatter3D(x, y, z);
plt.show()

введите сюда описание изображения

По поводу трубы, трубу можно по разному нарисовать, ну например с помощью квадратичной формы

np.random.seed(16)

fig = plt.figure(figsize=(10, 7))
ax = plt.axes(projection='3d');

x = 2*np.random.random(500) - 1
y = x + np.random.randn(500) * 200
z = x**2 - y**2 + x*y

ax.scatter3D(x, y, z, c='blue');
ax.scatter3D(x, y, -(z + 300000), c='blue');
plt.show()

введите сюда описание изображения

→ Ссылка