# Attraktordiagramm der logistischen Abbildung (Feigenbaum-Diagramm)
# Python Programm zum Plotten der berechneten Daten von (Logi_Attr_Klasse.cpp)
import matplotlib.pyplot as plt         # Python Bibliothek zum Plotten (siehe https://matplotlib.org/ )
import matplotlib
import numpy as np                      # Python Bibliothek fuer Mathematisches (siehe https://numpy.org/ )

# Festlegung einiger Bildparameter
params = {
    'figure.figsize'    : [12,8],
    'axes.titlesize' : 14,
    'axes.labelsize' : 16,
    'xtick.labelsize' : 14 ,
    'ytick.labelsize' : 14
}
matplotlib.rcParams.update(params)

data = np.genfromtxt("./Logi_AttrDiag_Klasse.dat") # Einlesen der berechneten Daten von Logi_Attr_Klasse.cpp

#plt.ylim([0, 1])                                                                       # Grenzen y-Achse (Standard)
#plt.ylim([0.3, 0.4])                                                                   # Grenzen y-Achse (Zoom 1)
#plt.ylim([0.3, 0.31])                                                                  # Grenzen y-Achse (Zoom 2)
plt.ylim([0.45, 0.54])                                                                 # Grenzen y-Achse (Zoom 3)
plt.title(r'Attraktordiagramm der logistischen Abbildung (Feigenbaum-Diagramm)')       # Titel der Abbildung
plt.ylabel(r'Folgenwert $x_n$')                                                        # Beschriftung y-Achse
plt.xlabel('Bifurkationsparameter a')                                                  # Beschriftung x-Achse
for i in range(1,len(data[0,:])):                                                      # for-Schleife ueber die eingelesenen Folgenwerte
    plt.scatter(data[:,0],data[:,i],c="black", s=0.2, alpha=0.7)                       # Plotten der Daten (ab Index 100)
plt.savefig("Logi_AttrDiagr_Klasse_zoom3.png", dpi=100,bbox_inches="tight",pad_inches=0.05,format="png") # Speichern der Abbildung als Bild
plt.show()                                                        # Zusaetzliches Darstellen der Abbildung in einem separaten Fenster
