from matte import R
import numpy as np
import matplotlib.pyplot as plt
import time

#tar inn CR, HR, T_iso og t_iso. Sett en av variablene lik 'var' det er den variabelen som plottes som x-aksen.
def plot(CR = 0.1, T_iso = 800, t_iso = 50, HR = 'var'):
    # R_matr blir en 3xN matrise med [R_heating, R_iso, R_total] i hver rad
    if HR == 'var':
        var_axis = np.linspace(0.1, 2, 50)
        R_matr = np.array([R(HR=HR, CR=CR, T_iso=T_iso, t_iso=t_iso) for HR in var_axis])
        legend_loc = 'upper right'
    elif CR == 'var':
        var_axis = np.linspace(0.1, 2, 50)
        R_matr = [R(HR=HR, CR=CR, T_iso=T_iso, t_iso=t_iso) for CR in var_axis]
        legend_loc = 'upper right'
    elif T_iso == 'var':
        var_axis = np.linspace(900, 1400, 100)
        R_matr = [R(HR=HR, CR=CR, T_iso=T_iso, t_iso=t_iso) for T_iso in var_axis]
        legend_loc = 'upper left'
    elif t_iso == 'var':
        var_axis = np.linspace(1, 100, 100)
        R_matr = [R(HR=HR, CR=CR, T_iso=T_iso, t_iso=t_iso) for t_iso in var_axis]
        legend_loc = 'upper left'

    R_matr = np.transpose(R_matr)

    labels = ['R after heating','R after isotherm','R after cooling']

    # For filling between
    delta_R = abs(max(R_matr[0]) - min(R_matr[2]))
    base = min(R_matr[0]) - 0.1*delta_R
    top = max(R_matr[2]) + 0.1*delta_R

    baseline = [base for i in var_axis]

    plt.fill_between(var_axis, R_matr[0], baseline, color='red', alpha=0.9, label=labels[0])
    for i in range(1,3):
        plt.fill_between(var_axis, R_matr[i-1], R_matr[i], color = 'red', alpha = 0.9 - 0.3*i, label = labels[i])

    plt.ylim(base, top)
    plt.xlim(min(var_axis), max(var_axis))
    plt.legend(loc = legend_loc, fontsize = 16)

#plot(CR=0.1, T_iso = 1000, t_iso = 50, HR = 'var')
#plt.show()
