Chtěl bych si vytvořit 3D obrázek rovnici s x a y, podobně jako na Google 3D grafu.
Příklad:
vstup: sin(sqrt(x**2 + y**2))
Z bude zřejmě roven dané zadání, ale jak se x
a y
vypočítá? Díky za každou pomoc!
Můžete začít tím, že vytvoří meshgrid
pro vaše X
a Y
. Pak spočítat své Z
tím, že dělá Z=np.sin(np.sqrt(X**2 + Y**2))
. Konečně můžete spiknutí povrchu pomocí funkce matplotlib ax.plot_surface(X, Y, Z)
.
Můžete najít kód níže:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
N_points=100
x = np.linspace(-10, 10, N_points)
y = np.linspace(-10, 10, N_points)
X, Y = np.meshgrid(x, y)
Z=np.sin(np.sqrt(X**2 + Y**2))
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, Z)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
plt.show()
A výstup tento kód dává: