# -*- coding: utf-8 -*-
"""
Created on Fri Oct  3 12:28:19 2025

@author: Moritz Romeike
"""

# ------------------------------------------------------------------------
# Programmcode 09 (Python): Power-Dioden-Visualisierung 
# ------------------------------------------------------------------------
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pathlib import Path

# Skript-Ordner
base = Path(__file__).resolve().parent
data_path = base / "Kap_4.3_Häufigkeitsverteilung_Power-Dioden.xlsx"

# Daten laden
df = pd.read_excel(data_path)

# Erste numerische Spalte als Messwerte (wie in R)
num_cols = df.select_dtypes(include=["number"]).columns
if len(num_cols) == 0:
    raise ValueError("Keine numerische Spalte gefunden.")
messwerte_col = num_cols[0]

# Labels "Diode 01" ... in Daten einfügen
df = df.copy()
df["Diode"] = [f"Diode {i:02d}" for i in range(1, len(df) + 1)]
vals = pd.to_numeric(df[messwerte_col], errors="coerce")

# 1) Balkendiagramm "Häufigkeit" (hier: gemessene Werte als Höhen)
plt.figure(figsize=(8,4))
plt.bar(df["Diode"], vals)
plt.title("Häufigkeit der Messwerte je Power-Diode")
plt.xlabel("Diode")
plt.ylabel("Häufigkeit")
plt.xticks(rotation=45, ha="right")
plt.tight_layout()
plt.savefig(base / "power_dioden_bar.png", dpi=150)
plt.show()

# 2) Boxplot der Messwerte
plt.figure(figsize=(4,5))
plt.boxplot(vals.dropna().values, vert=True)
plt.title("Boxplot der Power-Dioden-Messwerte")
plt.ylabel("Messwert")
plt.tight_layout()
plt.savefig(base / "power_dioden_boxplot.png", dpi=150)
plt.show()

# 3) Liniendiagramm + Durchschnittslinie
df["Beobachtung"] = np.arange(1, len(df) + 1)
plt.figure(figsize=(8,4))
plt.plot(df["Beobachtung"], vals, marker="o")
avg = float(vals.mean())
plt.axhline(avg, linestyle="--")
plt.title("Gemessene Werte (mit Durchschnitt)")
plt.xlabel("Diode (Index)")
plt.ylabel("Messwert")
plt.tight_layout()
plt.savefig(base / "power_dioden_line_avg.png", dpi=150)
plt.show()
# ------------------------------------------------------------------------
