# Wariancja
import statistics
import matplotlib.pyplot as plt

# Funkcja do obliczania wariancji i średniej
def calculate_variance(group):
    mean = statistics.mean(group)
    variance = sum((x - mean) ** 2 for x in group) / (len(group) - 1)
    return variance, mean

# Dane punktowe dla czterech drużyn
pajaki = [48, 49, 51, 52]
ender_dragony = [0, 0, 100, 100]
szkielety = [10, 30, 70, 90]
zombie = [49, 50, 50, 51]

groups = {
    "Pająki Parkour Masterzy": pajaki,
    "Ender Dragony z Ohio": ender_dragony,
    "Szkielety Beznogi Snajperzy": szkielety,
    "Zombie Ziomby": zombie
}

# Obliczanie wariancji i średniej dla każdej grupy
variances = {}
means = {}

for name, group in groups.items():
    var, mean = calculate_variance(group)
    variances[name] = var
    means[name] = mean
    print(f"{name} - Średnia: {mean}, Wariancja: {var}")

# Tworzenie wykresu
plt.figure(figsize=(10, 6))

markers = ['o', 's', '^', 'D']
colors = ['blue', 'red', 'green', 'purple']

for i, (name, group) in enumerate(groups.items()):
    x_values = list(range(len(group)))
    y_values_mean = [means[name]] * len(group)

    # Scatter plot wartości rzeczywistych
    plt.scatter(x_values, group, color=colors[i], 
                label=f"{name} - Dane rzeczywiste", marker=markers[i])

    # Linia średniej
    plt.plot(x_values, y_values_mean, color=colors[i],
             linestyle='dashed', label=f"{name} - Średnia")

# Opisy osi i tytuł
plt.xlabel("Indeks wartości")
plt.ylabel("Punkty gracza")
plt.title("Średnia i wartości rzeczywiste punktów dla czterech drużyn Minecraft")

# Legenda
plt.legend(loc='lower right')
plt.show()
