diff --git a/src/plot.py b/src/plot.py index c217079..511ba8c 100644 --- a/src/plot.py +++ b/src/plot.py @@ -4,42 +4,50 @@ import pandas as pd import seaborn as sns sns.set_theme() -sns.dark_palette("seagreen") - -"""Write to file (for dense matrix): -Line give size of matrix (column give number of transformations until convergence) - N 1 (2 3 4 5) - 3 - 6 - 9 - 12 - 15 -""" - -def read_data(filename: str) -> tuple: - N = [] - T = [] - with open(filename, "r") as f: - lines = f.readlines() - for line in lines: - n_i, t_i = line.strip().split(",") - N.append(float(n_i)) - T.append(float(t_i)) - return (N, T) +plt.rcParams['text.usetex'] = True +def plot_transformations(save: bool=False) -> None: + # Load data + tridiag = pd.read_csv("../latex/output/transform_tridiag.csv", header=0) + dense = pd.read_csv("../latex/output/transform_dense.csv", header=0) -def plot_similarity_transformations(N: np.ndarray, T: np.ndarray) -> None: fig, ax = plt.subplots() - ax.plot(N, T, label='Transformations') + ax.loglog(dense['N'], dense['T'], '--', label='Dense') + ax.loglog(tridiag['N'], tridiag['T'], label='Tridiagonal') ax.set_xlabel('N') ax.set_ylabel('Similarity transformations') - ax.set_xlim(xmin=N[0], xmax=N[-1]) - fig.savefig("similarity_transformation.pdf") + ax.legend() -def plot_eigenvectors(): - pass + # Save to file + if save is True: + fig.savefig("../latex/images/transform.pdf") + + + +def plot_eigenvectors(N: int, save: bool=False) -> None: + # Load data based on matrix size + name = "eigenvector_" + str(N) + path = "../latex/output/" + name + ".csv" + eigvec = pd.read_csv(path, header=0) + + fig, ax = plt.subplots() + ax.plot(eigvec['x'], eigvec['Vector 1'], label='Vector 1') + ax.plot(eigvec['x'], eigvec['Vector 2'], label='Vector 2') + ax.plot(eigvec['x'], eigvec['Vector 3'], label='Vector 3') + ax.set_xlabel(r'Element $\hat{x}_{i}$') + ax.set_ylabel(r'Value of element $v_{i}$') + ax.legend() + + # Save to file + if save is True: + fig.savefig("../latex/images/" + name + ".pdf") + + if __name__ == '__main__': - pass \ No newline at end of file + plot_transformations(True) + plot_eigenvectors(6, True) + plot_eigenvectors(100, True) + # plt.show() \ No newline at end of file