# Programm zum Plotten der Daten des Vector-Containers mit 10 Dingen (Vector_Dinge.cpp)
import matplotlib # Python Bibliothek zum Plotten (siehe https://matplotlib.org/ )
import matplotlib.pyplot as plt # Python Bibliothek zum Plotten (siehe https://matplotlib.org/ )
import numpy as np # Python Bibliothek fuer Mathematisches (siehe https://numpy.org/ )
import matplotlib.animation as animation
from IPython.display import HTML
params = {
'figure.figsize' : [8,8],
# 'text.usetex' : True,
'axes.titlesize' : 14,
'axes.labelsize' : 16,
'xtick.labelsize' : 14 ,
'ytick.labelsize' : 14
}
matplotlib.rcParams.update(params)
data = np.genfromtxt("./Vector_Dinge.dat") # Einlesen der berechneten Daten von Vector_Dinge.cpp
r = 200 # Radius eines Dings
plot_min=0 # Festlegung der x-Untergrenze (Abmessung Kiste)
plot_max=40 # Festlegung der x-Obergrenze (Abmessung Kiste)
anz_teilchen = 10 # Definition der Anzahl der Dinge
cmap = plt.cm.Blues # Definition der Farbschattierung der Dinge
line_colors = cmap (np.linspace(0.2,1,anz_teilchen)) # Definition der Farbschattierung der Dinge
fig = plt.figure()
ax = fig.gca()
def init():
it=0
for i in range(anz_teilchen): # for-Schleife ueber die Teilchen in der Kiste
ax.scatter(data[it,3*i+3],data[it,3*i+4], marker='o', color=line_colors[i], s=r) # Kennzeichnung der Position des Dinges durch einen blauen Kreis
ax.text(data[it,3*i+3],data[it,3*i+4], str(int(data[it,3*i+2])), fontsize=10, verticalalignment='center', horizontalalignment='center', color="red") # Ding Nr.
ax.set_xlim(-1,45) # Plot-Limit x-Achse
ax.set_ylim(-1,45) # Plot-Limit y-Achse
ax.set_title(r'Container mit Teilchen') # Titel der Abbildung
ax.set_ylabel('y') # Beschriftung y-Achse
ax.set_xlabel('x') # Beschriftung x-Achse
return fig,
def animate(it):
# print(it) # Terminalausgabe der Erstellung des i-ten Bildes
ax.cla()
for i in range(anz_teilchen): # for-Schleife ueber die Teilchen in der Kiste
ax.scatter(data[it,3*i+3],data[it,3*i+4], marker='o', color=line_colors[i], s=r) # Kennzeichnung der Position des Dinges durch einen blauen Kreis
ax.text(data[it,3*i+3],data[it,3*i+4], str(int(data[it,3*i+2])), fontsize=10, verticalalignment='center', horizontalalignment='center', color="red") # Ding Nr.
ax.set_xlim(-1,45) # Plot-Limit x-Achse
ax.set_ylim(-1,45) # Plot-Limit y-Achse
ax.set_title(r'Container mit Teilchen') # Titel der Abbildung
ax.set_ylabel('y') # Beschriftung y-Achse
ax.set_xlabel('x') # Beschriftung x-Achse
# pic_name = "./Bilder/" + "Vector_Dinge_" + "{:0>3d}".format(it) + ".png"
# plt.savefig(pic_name, dpi=200,bbox_inches="tight",pad_inches=0.05,format="png")
return fig,
ani = animation.FuncAnimation(fig,animate,init_func=init,frames=len(data[:,0]),interval=50)
plt.close(ani._fig)
HTML(ani.to_html5_video())
# Python Programm zum Plotten der Daten des Vector-Containers mit 30 Dingen (Vector_Dingea.cpp)
from PIL import Image
from matplotlib.ticker import NullFormatter
params = {
'figure.figsize' : [17.34,13]
}
matplotlib.rcParams.update(params)
im = Image.open('./illustration_DeborahMoldawski.jpg')
plt.style.use('dark_background')
nullfmt = NullFormatter()
data = np.genfromtxt("./Vector_Dingea.dat") # Einlesen der berechneten Daten von Vector_Dingea.cpp
r = 500 # Radius eines Dinges
alp = 0.9 # Transparenz eines Dinges
plot_max_x = 5334 # Festlegung der x-Obergrenze (Abmessung Kiste)
anz_teilchen = int(len(data[0,:])/3) # Definition der Anzahl der Dinge
max_i = len(data[:,0]) # Anzahl der ausgegebenen Zeitwerte
cmap = plt.cm.nipy_spectral # Definition der Farbschattierung der Dinge
line_colors = cmap (np.linspace(0.2,1,anz_teilchen)) # Definition der Farbschattierung der Dinge
fig, ax = plt.subplots()
def init():
it=0
ax.yaxis.set_major_formatter(nullfmt) # Keine Beschriftung der y-Achse
ax.xaxis.set_major_formatter(nullfmt) # Keine Beschriftung der y-Achse
ax.set_xlim(-200,plot_max_x+200) # Plot-Limit x-Achse
ax.imshow(im) # Einbinden des Hintergrundbildes
for i in range(anz_teilchen): # for-Schleife ueber die Teilchen in der Kiste
ax.scatter(data[it,3*i+3],data[it,3*i+4], marker='o', color=line_colors[i], s=r, alpha=alp) # Kennzeichnung der Position des Dinges durch einen farbigen Kreis
ax.text(data[it,3*i+3],data[it,3*i+4], str(int(data[it,3*i+2])), fontsize=14, verticalalignment='center', horizontalalignment='center', color="white", alpha=alp) # Ding Nr.
return fig,
def animate(it):
# print(it) # Terminalausgabe der Erstellung des i-ten Bildes
ax.cla()
ax.yaxis.set_major_formatter(nullfmt) # Keine Beschriftung der y-Achse
ax.xaxis.set_major_formatter(nullfmt) # Keine Beschriftung der y-Achse
ax.set_xlim(-200,plot_max_x+200) # Plot-Limit x-Achse
ax.imshow(im) # Einbinden des Hintergrundbildes
alp=0.9
if it > max_i-15: # Ausblenden der Dinge am Ende
alp = alp*0.75 # Ausblenden der Dinge am Ende
for i in range(anz_teilchen): # for-Schleife ueber die Teilchen in der Kiste
ax.scatter(data[it,3*i+3],data[it,3*i+4], marker='o', color=line_colors[i], s=r, alpha=alp) # Kennzeichnung der Position des Dinges durch einen farbigen Kreis
ax.text(data[it,3*i+3],data[it,3*i+4], str(int(data[it,3*i+2])), fontsize=14, verticalalignment='center', horizontalalignment='center', color="white", alpha=alp) # Ding Nr.
# pic_name = "./Bilder_a/" + "Vector_Dinge_" + "{:0>3d}".format(it) + ".png" # Bild-Ausgabe mit Speicherung eines individuellen Iteration-Namens
# plt.savefig(pic_name, dpi=200,bbox_inches="tight",pad_inches=0.05,format="png")
# plt.close()
return fig,
ani = animation.FuncAnimation(fig,animate,init_func=init,frames=max_i,interval=50)
plt.close(ani._fig)
HTML(ani.to_html5_video())