¿Cómo cambiar el ángulo de la trama 3D en Python?

Requisitos previos: Matplotlib , NumPy

En este artículo, veremos cómo podemos ver nuestro gráfico desde diferentes ángulos. Aquí usamos tres métodos diferentes para trazar nuestro gráfico. Antes de comenzar veamos algunos conceptos básicos del módulo requerido para este objetivo.

  • entumecido

Acercarse:

  • Importar la biblioteca requerida.
  • Crea una figura.
  • Crear una hoja de datos.
  • Cambiar el ángulo de la trama 3D
  • Mostrar gráfico.

Paso 1: importar bibliotecas.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

Paso 2: Trazado de la figura del eje 3-D.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
  
fig = plt.figure(figsize = (8, 8))
ax = plt.axes(projection = '3d')

Paso 3: Creación de una hoja de datos para todos los 3 ejes de la muestra.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
  
fig = plt.figure(figsize = (8, 8))
ax = plt.axes(projection = '3d')
  
# Data for a three-dimensional line
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'green')

Paso 4: se puede usar view_init() para rotar los ejes mediante programación.

Sintaxis: view_init(elev, azim)

Parámetros: 

  • ‘elev’ almacena el ángulo de elevación en el plano z.
  • ‘azim’ almacena el ángulo de acimut en el constructor x,y plane.D.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
  
fig = plt.figure(figsize = (8,8))
ax = plt.axes(projection = '3d')
  
# Data for a three-dimensional line
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'green')
  
ax.view_init(-140, 60)

A continuación se muestra la implementación completa:

Ejemplo 1: En este ejemplo, trazaremos un gráfico de curva con un ángulo elevado de -140 grados y un ángulo horizontal de 60 grados.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
  
fig = plt.figure(figsize = (8,8))
ax = plt.axes(projection = '3d')
  
# Data for a three-dimensional line
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'green')
  
ax.view_init(-140, 60)
  
plt.show()

Producción:

Ejemplo 2: En este ejemplo, trazaremos un gráfico de curva con un ángulo elevado de 120 grados y un ángulo horizontal de 30 grados.

Python3

from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
  
fig = plt.figure(figsize = (8, 8))
ax = plt.axes(projection = '3d')
  
# Data for a three-dimensional line
z = np.linspace(0, 15, 1000)
x = np.sin(z)
y = np.cos(z)
ax.plot3D(x, y, z, 'green')
  
ax.view_init(120, 30)
  
plt.show()

Producción:

Ejemplo 3: En este ejemplo, trazaremos un gráfico de placa rectangular con un ángulo de visión de 50 grados.

Python3

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from math import sin, cos
  
fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(111, projection = '3d')
  
#creating Datasheet
y = np.linspace(-1, 1, 200)
x = np.linspace(-1, 1, 200)
x,y = np.meshgrid(x, y)
  
#set z values
z = x + y 
  
# rotate the samples by changing the value of 'a'
a = 50 
  
t = np.transpose(np.array([x, y, z]), ( 1, 2, 0))
  
m = [[cos(a), 0, sin(a)],[0, 1, 0],
     [-sin(a), 0, cos(a)]]
  
X,Y,Z = np.transpose(np.dot(t, m), (2, 0, 1))
  
#label axes
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
  
#plot figure
ax.plot_surface(X,Y,Z, alpha = 0.5,
                color = 'red')
  
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por skrg141 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *