using Plots
using CSV
using DataFrames

df = CSV.read("data.csv", DataFrame)

@. df.total = (df.redstone + df.glowstone + df.sugar + df.sticks + df.bottles + df.gunpowder + df.eyes)
@. df.total_rate = df.total / 5

scatter(
    df.spawners,
    df.total_rate,
    title="Total items per minute",
    label="Single drop tower",
    xlabel="Spawners",
    ylabel="Items per Minute",
    ylim=(0, :auto),
    xticks=[1, 4, 8, 12, 16, 20]
)
savefig("total.pdf")
savefig("total.png")

@. df.per_spawner = df.total_rate / df.spawners

scatter(
    df.spawners,
    df.per_spawner,
    title="Items per minute per spawner",
    label="Single drop tower",
    xlabel="Spawners",
    ylabel="Items per Minute",
    ylim=(0, :auto),
    xticks=[1, 4, 8, 12, 16, 20]
)
savefig("per_spawner.pdf")
savefig("per_spawner.png")

@. df.redstone_rate_per_spawner = df.redstone / df.spawners / 5
@. df.glowstone_rate_per_spawner = df.glowstone / df.spawners / 5
@. df.bottles_rate_per_spawner = df.bottles / df.spawners / 5
@. df.sugar_rate_per_spawner = df.sugar / df.spawners / 5
@. df.gunpowder_rate_per_spawner = df.gunpowder / df.spawners / 5
@. df.sticks_rate_per_spawner = df.sticks / df.spawners / 5
@. df.eyes_rate_per_spawner = df.eyes / df.spawners / 5

scatter(
    df.spawners,
    [df.redstone_rate_per_spawner df.glowstone_rate_per_spawner df.bottles_rate_per_spawner df.sugar_rate_per_spawner df.gunpowder_rate_per_spawner df.sticks_rate_per_spawner df.eyes_rate_per_spawner],
    title="Individual items per minute per spawner",
    label=["Redstone" "Glowstone" "Bottles" "Sugar" "Gunpowder" "Sticks" "Eyes"],
    xlabel="Spawners",
    ylabel="Items per minute per spawner",
    ylim=(0, :auto),
    xticks=[1, 4, 8, 12, 16, 20]
)

savefig("individual_items_rates.pdf")
savefig("individual_items_rates.png")

@. df.redstone_ratio = df.redstone / df.total * 100
@. df.glowstone_ratio = df.glowstone / df.total * 100
@. df.bottles_ratio = df.bottles / df.total * 100
@. df.sugar_ratio = df.sugar / df.total * 100
@. df.gunpowder_ratio = df.gunpowder / df.total * 100
@. df.sticks_ratio = df.sticks / df.total * 100
@. df.eyes_ratio = df.eyes / df.total * 100

scatter(
    df.spawners,
    [df.redstone_ratio df.glowstone_ratio df.bottles_ratio df.sugar_ratio df.gunpowder_ratio df.sticks_ratio df.eyes_ratio],
    title="Item share",
    label=["Redstone" "Glowstone" "Bottles" "Sugar" "Gunpowder" "Sticks" "Eyes"],
    xlabel="Spawners",
    ylabel="Percentage",
    ylim=(0, :auto),
    xticks=[1, 4, 8, 12, 16, 20]
)

savefig("item_ratios.pdf")
savefig("item_ratios.png")

@. df.redstone_rate = df.redstone / 5
@. df.glowstone_rate = df.glowstone / 5
@. df.bottles_rate = df.bottles / 5
@. df.sugar_rate = df.sugar / 5
@. df.gunpowder_rate = df.gunpowder / 5
@. df.sticks_rate = df.sticks / 5
@. df.eyes_rate = df.eyes / 5

@. df.low_rate_items_rate = (df.redstone_rate + df.glowstone_rate + df.bottles_rate + df.sugar_rate + df.gunpowder_rate + df.eyes_rate) / 6
@. df.high_rate_items_rate = df.sticks_rate

scatter(
    df.spawners,
    [df.low_rate_items_rate df.high_rate_items_rate],
    title="Items per tower",
    label=["Low rate items" "High rate items"],
    xlabel="Spawners",
    ylabel="Items per minute per tower",
    ylim=(0, :auto),
    xticks=[1, 4, 8, 12, 16, 20]
)

savefig("items_per_tower.pdf")
savefig("items_per_tower.png")