#!/usr/bin/env python3 import sys import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d import axes3d, Axes3D plt.rcParams['text.usetex'] = True f = open( sys.argv[1], 'r' ) current_sigma = 0.0 current_rho = 0.0 current_beta = 0.0 sigma_lst = [] rho_lst = [] beta_lst = [] x_lst = [] y_lst = [] z_lst = [] x_data = [] y_data = [] z_data = [] parameters = [] data = {} size = 0 for line in f: line = line.strip() a = line.split() if not a: continue if a[ 0 ] == "#": if x_lst: parameters_tuple = ( current_sigma, current_rho, current_beta ) parameters.append( parameters_tuple ) data_tuple = ( np.array( x_lst ), np.array( y_lst ), np.array( z_lst ) ) data[ parameters_tuple ] = data_tuple x_lst.clear() y_lst.clear() z_lst.clear() current_sigma = float( a[ 2 ] ) current_rho = float( a[ 4 ] ) current_beta = float( a [ 6 ] ) if current_sigma not in sigma_lst: sigma_lst.append( current_sigma ) if current_rho not in rho_lst: rho_lst.append( current_rho ) if current_beta not in beta_lst: beta_lst.append( current_beta ) else: x_lst.append( float( a[ 0 ] ) ) y_lst.append( float( a[ 1 ] ) ) z_lst.append( float( a[ 2 ] ) ) parameters_tuple = ( current_sigma, current_rho, current_beta ) parameters.append( parameters_tuple ) data_tuple = ( np.array( x_lst ), np.array( y_lst ), np.array( z_lst ) ) data[ parameters_tuple ] = data_tuple sigma_n = len( sigma_lst ) sigma_idx = 1 for sigma in sigma_lst: rho_n = len( rho_lst ) beta_n = len( beta_lst ) fig, ax = plt.subplots( rho_n, beta_n, figsize=(8, 8), sharey=True, sharex=True ) fig.suptitle( f'$\sigma={sigma}$') #ax = Axes3D(fig) dos not work with ax indexing rho_idx = 0 beta_idx = 0 for rho in rho_lst: for beta in beta_lst: parameters_tuple = ( sigma, rho, beta ) data_tuple = data[ parameters_tuple ] ax[ rho_idx, beta_idx ].plot( data_tuple[ 1 ], data_tuple[ 2 ], linewidth=1.0 ) if beta_idx == 0: ax[ rho_idx, beta_idx ].set_ylabel( f'$\\rho={rho}$' ) if rho_idx == rho_n-1: ax[ rho_idx, beta_idx ].set_xlabel( f'$\\beta={beta}$' ) beta_idx = beta_idx + 1 beta_idx = 0 rho_idx = rho_idx + 1 plt.savefig( f"{sys.argv[2]}-{sigma_idx}.png" ) sigma_idx = sigma_idx + 1 plt.close(fig)