Python pode realmente desenhar imagens 3D!

Python, uma linguagem de programação que existe há muitos anos (medidos em anos de tecnologia) e possui quase todas as bibliotecas funcionais. Quer enviar um email? Python pode ajudá-lo. Quer realizar alguns cálculos matemáticos complexos? Python também pode fazer o trabalho. Também o uso diariamente para desenho de imagens e visualização de dados. Mas a maioria dos amigos provavelmente nunca usou a função 3D. Então, coloque seus óculos 3D (cara de piada)! ~

Bibliotecas essenciais

  • Matplotlib : é construído sobre uma base sólida de arrays NumPy e foi projetado para funcionar com a pilha SciPy.

  • Numpy : O pacote preferido para processamento de array, fornecendo arrays e matrizes multidimensionais de alto desempenho. Python é um bom parceiro para processamento de dados.

  • mpl_toolkits : É aqui que a mágica 3D acontece, ele fornece ferramentas básicas de desenho 3D.

Exemplo 1: dança de onda senoidal em 3D

Usando np.arange e np.sin, criamos uma matriz de pontos. Em seguida, usamos o método scatter() do matplotlib para nos ajudar a traçar essa dança.

# Import necessary libraries
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


# Set up the figure and axis
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection='3d')


# Generating data points for the 3D sine wave
x = np.arange(0, 20, 0.1)
y = np.sin(x)
z = y * np.sin(x)
c = x + y


# Plotting the scatter graph
ax.scatter(x, y, z, c=c)


# Turning off the axis
plt.axis('off')


# Display the graph
plt.show()

0b30ef85b9f28f0b06aced6fb45396c4.png       1288ec5972142f97fa49d37fb1e1718c.png

Exibição de resultados em execução

Exemplo 2: Cubos coloridos

Estabelecemos um eixo de coordenadas 3D com dimensões X=5, Y=5, Z=5, usamos np.ones() para construir as dimensões do cubo e, em seguida, usamos o parâmetro alfa para controlar a transparência da cor.

# Set up the figure and axis
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection='3d')


# Data points for the cube
x = np.ones(5)
y = np.ones(5)
z = np.ones(5)


# Plotting the cube with different opacities
for i in range(5):
    for j in range(5):
        for k in range(5):
            ax.scatter(i, j, k, alpha=(i+j+k)/15)


# Turning off the axis
plt.axis('off')


# Display the graph
plt.show()

7f8ec8bc1b9463d67984ceb47048800b.png      ea67b67971ed98bd5107ddf482d4e690.png

Exibição de resultados em execução

Exemplo 3: wireframe verde

Usando numpy.linspace(), criamos uma matriz de elementos colocados linearmente e então visualizamos um wireframe 3D.

# Set up the figure and axis
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection='3d')


# Generating data points
x = np.linspace(-5, 5, 50)
y = np.linspace(-5, 5, 50)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))


# Plotting the wireframe
ax.plot_wireframe(x, y, z, color='green')


# Turning off the axis
plt.axis('off')


# Display the graph
plt.show()

58c5e5d6a913ef38a51382e4092b8ea5.png     b10b774fbd9d77f1cd8b9a405d873ddb.png

Exibição de resultados em execução

Exemplo 4: espiral de 360 ​​graus

Desenhamos uma forma espiral e usamos loops para visualizá-la em uma rotação de 360 ​​graus.

# Set up the figure and axis
fig = plt.figure(figsize=(10, 10))
ax = plt.axes(projection='3d')


# Generating the spiral data points
theta = np.linspace(-8 * np.pi, 8 * np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = r * np.sin(theta)
y = r * np.cos(theta)


# Plotting the spiral
ax.plot(x, y, z, 'b-')


# Turning off the axis
plt.axis('off')


# Display the graph
plt.show()

af8fc879e47f5abe82449fb63b0efefc.png     f3e5bce9749ebba583bb41914eda461d.png

Exibição de resultados em execução

Embora o Python ainda não possa preparar uma xícara de café para você (mas gostaria), ele certamente pode fazer seus dados dançarem em 3D!

· FIM ·

VIDA FELIZ

6b06622d85bfc6f7f07f7a239438325e.png

Este artigo é apenas para aprendizado e comunicação. Se houver alguma violação, entre em contato com o autor para excluí-lo.

Acho que você gosta

Origin blog.csdn.net/weixin_38739735/article/details/132913818
Recomendado
Clasificación