import matplotlib.pyplot as plt def tabelle_als_bild(spannungen, dateiname="tabelle.png"): """Erstellt eine Tabelle als Bild mit Matplotlib mit farbigen Blitzen und Rahmen. Args: spannungen: Eine Liste der Spannungswerte. dateiname: Der Dateiname für das gespeicherte Bild. """ fig, ax = plt.subplots(figsize=(2, len(spannungen)/2 + 0.5)) table_data = [["kV"]] # Einheit in der ersten Zeile for i, spannung in enumerate(spannungen): if i == len(spannungen) - 1: # Letzte Zeile table_data.append([f"⚡ {spannung:.1f} ⚡"]) else: table_data.append([f"{spannung:.1f}"]) table = ax.table(cellText=table_data, loc='center', cellLoc='center') # Formatierung table.scale(1, 1.5) ax.axis('off') # Rahmen und Textformatierung for (row, col), cell in table.get_celld().items(): if row == len(spannungen): # Rahmen um die letzte Zeile (mit Blitzen) cell.set_edgecolor("red") # Roter Rahmen cell.set_linewidth(3) text = cell.get_text() text.set_text(f"⚡ {spannungen[-1]:.1f} ⚡") # Text neu setzen mit direkter Formatierung text.set_fontsize(12) text.set_color("black") # Textfarbe wieder auf Schwarz setzen for t in text.get_children(): # Durch die Text-Elemente iterieren if "⚡" in t.get_text(): # Wenn es ein Blitz ist t.set_color("yellow") # Gelbe Farbe setzen cell.set_text_props(ha='center', va='center') elif row > 0: #alle anderen Zellen außer der ersten zentrieren cell.get_text().set_text(f"{spannungen[row-1]:.1f}") cell.set_text_props(ha='center', va='center') plt.show() # Beispiele spannungen1 = [9.6, 11.2, 12.8, 14.4, 16.0, 17.6] tabelle_als_bild(spannungen1, "tabelle_mit_farben_17_6.png")