from matplotlib import pyplot as plt
import csv
import glob
import numpy as np
from os.path import basename
for n inrange(9,14):#Dateien von Modul_9 bis zu Modul_13
plt.figure(1)# Subdiagramm 1 plotten
plt.figure(dpi =128, figsize=(10,6))
ax1 = plt.subplot(121)
plt.title("PIDrecovery_I-V_Kennlinie",fontsize =16)
plt.xlabel("Spannnung [V]", fontsize =16)
plt.ylabel("Strom [A]", fontsize =16)defname_konfiguration(n):# beim Name von Modul_9 muss noch ein '0' davor einfuegenif n ==9:returnstr("09")else:returnstr(n)
files =sorted(glob.glob("F:Python_AufgabeAufgabe_2P09-P13_PIDreDIV_CSP_PIDre_MZ_2_P"+ name_konfiguration(n)+"*.csv"))#list of filesprint("processin raw files")
mpp_liste=[]# eine liste fuer MPP erstellenforfilein files:
filename = basename(file).rsplit('.',1)[0]# each file in list of files print('r'+ filename +" ", flush =True)# progress informationwithopen(file)as f:#'with' will auto close after loop
csvreader = csv.reader(f, delimiter =",", quotechar='"')#read into csv objectfor line inrange(48):#skip header next(csvreader)
voltage =[]#init lists
current =[]for row in csvreader:
voltage.append(float(row[6]))#process each row
current.append(float(row[3]))#extract column
Imp = np.linspace(9,9,len(voltage))# Isc auf dem Diagramm anzeigen
idx = np.argwhere(np.diff(np.sign(Imp - current))).flatten()# entsprchende X-wert einsammelnprint(int(idx))print(float(np.array(current,dtype=np.float)[idx]))print(float(np.array(voltage,dtype=np.float)[idx]))
get_mpp=float(np.array(current,dtype=np.float)[idx]* np.array(voltage,dtype=np.float)[idx])# multiplizieren
mpp_liste.append(get_mpp)# die Liste von MPP ausfuellenprint("MPP: "+str(get_mpp))print("mpp_liste: "+str(mpp_liste[:]))
plt.plot(voltage,Imp, label= filename)#actual plot
plt.plot(voltage, current)
plt.plot(np.array(voltage,dtype=np.float)[idx], np.array(Imp,dtype=np.float)[idx],'ro')# kritische Punkte auf dem Diagramm anzeigen
plt.legend()
ax2 = plt.subplot(122)# Subdiagramm 2 plotten
plt.title("MPP_Kennlinie",fontsize =16)
plt.xlabel("Datei_nummer", fontsize =16)
plt.ylabel("MPP[W]", fontsize =16)
file_number= np.linspace(1,13,len(mpp_liste))
plt.plot(np.array(file_number),np.array(mpp_liste), label="DIV_CSP_PIDre_MZ_2_P"+ name_konfiguration(n)+"MPP_Kennlinie")
plt.legend()print("Done processing "+str(len(files))+" files.")#final information
plt.savefig("F:Python_AufgabeAufgabe_2P09-P13_PIDreDIV_CSP_PIDre_MZ_2_P"+ name_konfiguration(n)+".png", dpi =300)#save plot as file
plt.show()#present plot