Materialien/durschl-stehspannung-papier-graph.py
2025-01-28 21:18:43 +01:00

46 lines
1.9 KiB
Python

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")