es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Gráfico vacío de Python matplotlib

No parece que haya un problema por el cual el gráfico no muestre ninguna línea, está completamente en blanco. Soy nuevo en python.
“Intentando trazar el gráfico de la altura máxima y el rango con el ángulo”

import matplotlib.pyplot as plt
import numpy as np

def proyectil(Vo,Angulo):
   Acc = 9.8
   Altura_Max = (Vo**2)*np.sin(np.radians(Angulo**2))/Acc**2
   Rango = (Vo**2)*(np.sin(np.radians(Angulo)))/Acc
   plt.plot(int(Altura_Max), int(Angulo)) # Esta es la línea
   plt.show() # solo muestra un gráfico en blanco
   return ("Altura Máxima:", Altura_Max, "Rango Máximo:", Rango)

#Función Principal
Vo = int(input("Ingrese la Velocidad: "))
Angulo = int(input("Ingrese el Ángulo: "))
print(proyectil(Vo,Angulo))
Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código está en la línea plt.plot(int(Mheight),int(Angle)). La función plot() requiere arrays de valores x e y para graficar, pero el código solo proporciona valores individuales tanto para x como para y.

    Para solucionar esto, necesitamos crear arrays de valores x e y utilizando numpy y pasarlos como argumentos a plot(). Así es cómo debería modificarse el código:

    import matplotlib.pyplot as plt
    import numpy as np
    
    def projectile(Vo, Angle):
        Acc = 9.8
        t = np.linspace(0, 2 * Vo * np.sin(np.radians(Angle)) / Acc, num=100)  # array de tiempo
        x = Vo * np.cos(np.radians(Angle)) * t  # array de distancia horizontal
        y = Vo * np.sin(np.radians(Angle)) * t - 0.5 * Acc * (t ** 2)  # array de altura vertical
        plt.plot(x, y)
        plt.xlabel('Rango')
        plt.ylabel('Altura')
        plt.show()
        return ("Altura Máxima: ", max(y), "Rango Máximo: ", max(x))
    
    # Función Principal
    Vo = int(input("Ingrese la Velocidad: "))
    Angle = int(input("Ingrese el Ángulo: "))
    print(projectile(Vo, Angle))
    

    Este código genera tres arrays: t para el tiempo, x para la distancia horizontal y y para la altura vertical. La función plot() se llama con x e y como argumentos, y se llaman las funciones xlabel e ylabel para etiquetar los ejes. Finalmente, la función devuelve los valores de altura y rango máximos.

    Con estas modificaciones, el código debería producir un gráfico del movimiento del proyectil.

Comments are closed.