def fit_cubic()

in analysis/GreenSKU-Framework/src/derate_curve.py [0:0]


def fit_cubic(data_dict, plot=False):
    x_data = [float(x) for x in data_dict]
    y_data = [float(y) for y in data_dict.values()]
    # check if data forms horizontal line - if so, return horizontal line
    horizontal = check_horizontal(x_data, y_data)
    if horizontal:
        if plot:
            x_fit = np.linspace(x_data[0], x_data[-1], 100)
            y_fit = horizontal(x_fit)
            plt.plot(x_data, y_data, 'o', label='data')
            plt.plot(x_fit, y_fit, label='fit')
            plt.legend()
            plt.show()
        return horizontal
    return fit(cubic_func, x_data, y_data, plot)