Я хотел бы взять все результаты, которые у меня есть в моем текстовом документе, и создать из них график

#python #python-3.x #numpy

#python #python-3.x #numpy

Вопрос:

В принципе, у меня есть элемент под названием ligne, который полон данных из моделирования снаряда.(моделирование выполнено в коде # 1)

после этого я хотел бы создать тот же график в коде # 1, но при использовании данных в txt-документе вместо его вычисления.(Надеюсь, я ясно выражаюсь. Я не очень хорошо объясняю вещи)

Код # 1

  import matplotlib.pyplot as plt
import numpy as np

v0=20 #en metres par seconde
teta=np.radians(60) #radians pour l'usage dans sin/cos
g=9.8 #accel. gravitationnelle de la terre

#fonction qui trace parabole
def parabol(x=0,y=0,t=0):
    t=np.arange(0,(2*v0/g)*np.sin(teta),0.01)
    x=v0*np.cos(teta)*t
    y=v0*np.sin(teta)*t-(g/2)*t**2
    plt.plot(x,y,"k")
    return x,y,t
    
plt.axis('equal')
plt.grid('show')

x,y,t=parabol(0,0,0)


r=['{:.2f}, {:.4f}, {:.4f}n'.format(t[i],x[i],y[i]) for i in range(0,354)]

with open("parabol_results.txt",'w') as fic:
    fic.write("#Les données suivantes nous donnent le temps que notre objet sera en déplacementn et sa position x,y au moment t")
    fic.write("#Nous avons comme valeur initiales: v0=20 m/s et theta=60 degrés (pi/3) et les résultats sont (t,x,y)n")
    fic.writelines(r)
    
fic.close()

plt.show()
  

Это код, который я сделал до сих пор, чтобы попытаться построить тот же график, но с использованием данных в parabol_results.txt

 import matplotlib.pyplot as plt
import numpy as np

x=[]
y=[]
t=[]

with open("parabol_results.txt",'r') as fic:
    ligne=[ligne.strip() for ligne in fic]
    del ligne[0:2]


fic.close()
  

Мне было интересно, есть ли способ добавить мои x, y, t в списки, которые я создал, или, может быть, мне следует использовать array.

Большое вам спасибо за вашу помощь.

Ответ №1:

Привет, да, я отвечаю на свой собственный вопрос, потому что в итоге я понял это. Вот метод, который я нашел.

 import matplotlib.pyplot as plt
import numpy as np
#ouvrir et lire le fichier
with open("parabol_results.txt",'r') as fic:
    ligne=[ligne.strip().split(",") for ligne in fic]
    del ligne[0:2] #les deux premieres lignes ont du texte (no data)
fic.close()  
#separation des objets dans ligne en differente listes (x,y,t)
x=[x for t,x,y in ligne]
y=[y for t,x,y in ligne]
t=[t for t,x,y in ligne]

#passer en array les listes x,y,t
arr_x=np.asarray(x,dtype=np.float)
arr_y=np.asarray(y,dtype=np.float)
arr_t=np.asarray(t,dtype=np.float)

plt.axis('equal')
plt.grid('show')
plt.plot(arr_x,arr_y,color='k' )

#losanges avec un pas de 0.1
n=0
for i in t:
    if float(i)==0.1*n:
        plt.plot(arr_x,arr_y, marker='D',color='k')
plt.show()
  

разделите в списках, а затем преобразуйте в массив