Skip to content
Snippets Groups Projects
Plot_MinVec.py 18.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    import numpy as np
    import matplotlib.pyplot as plt
    import sympy as sym
    import math
    import os
    import subprocess
    import fileinput
    import re
    import matlab.engine
    from HelperFunctions import *
    from ClassifyMinVec import *
    import matplotlib.cm as cm
    from matplotlib.colors import Normalize
    
    import matplotlib.ticker as ticker
    # from subprocess import Popen, PIPE
    #import sys
    
    ###################### makePlot.py #########################
    #  Generalized Plot-Script giving the option to define
    #  quantity of interest and the parameter it depends on
    #  to create a plot
    #
    #  Input: Define y & x for "x-y plot" as Strings
    #  - Run the 'Cell-Problem' for the different Parameter-Points
    #  (alternatively run 'Compute_MuGamma' if quantity of interest
    #   is q3=muGamma for a significant Speedup)
    
    ###########################################################
    
    def format_func(value, tick_number):
        # find number of multiples of pi/2
        N = int(np.round(2 * value / np.pi))
        if N == 0:
            return "0"
        elif N == 1:
            return r"$\pi/2$"
        elif N == 2:
            return r"$\pi$"
        elif N % 2 > 0:
            return r"${0}\pi/2$".format(N)
        else:
            return r"${0}\pi$".format(N // 2)
    
    
    
    
    
    def find_nearest(array, value):
        array = np.asarray(array)
        idx = (np.abs(array - value)).argmin()
        return array[idx]
    
    
    def find_nearestIdx(array, value):
        array = np.asarray(array)
        idx = (np.abs(array - value)).argmin()
        return idx
    
    
    
    # TODO
    # - Fallunterscheidung (Speedup) falls gesuchter value mu_gamma = q3
    # - Also Add option to plot Minimization Output
    
    
    # ----- Setup Paths -----
    InputFile  = "/inputs/cellsolver.parset"
    OutputFile = "/outputs/output.txt"
    # path = os.getcwd()
    # InputFilePath = os.getcwd()+InputFile
    # OutputFilePath = os.getcwd()+OutputFile
    # --------- Run  from src folder:
    path_parent = os.path.dirname(os.getcwd())
    os.chdir(path_parent)
    path = os.getcwd()
    print(path)
    InputFilePath = os.getcwd()+InputFile
    OutputFilePath = os.getcwd()+OutputFile
    print("InputFilepath: ", InputFilePath)
    print("OutputFilepath: ", OutputFilePath)
    print("Path: ", path)
    
    #---------------------------------------------------------------
    
    print('---- Input parameters: -----')
    # mu1 = 10.0
    # # lambda1 = 10.0
    rho1 = 1.0
    # alpha = 5.0
    # beta = 10.0
    # theta = 1.0/4.0
    
    
    mu1 = 10.0
    # lambda1 = 10.0
    # rho1 = 10.0
    alpha = 5.0
    # beta = 2.0
    beta = 10.0
    theta = 1.0/4.0
    
    theta = 1.0/2.0
    # theta = 1.0/12.0
    
    
    lambda1 = 0.0
    gamma = 1.0/4.0
    
    gamma = 'infinity'
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    gamma = '0'
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    print('mu1: ', mu1)
    print('rho1: ', rho1)
    print('alpha: ', alpha)
    print('beta: ', beta)
    print('theta: ', theta)
    print('gamma:', gamma)
    print('----------------------------')
    
    
    # TODO? : Ask User for Input ...
    # function = input("Enter value you want to plot (y-value):\n")
    # print(f'You entered {function}')
    # parameter = input("Enter Parameter this value depends on (x-value) :\n")
    # print(f'You entered {parameter}')
    
    # Add Option to change NumberOfElements used for computation of Cell-Problem
    
    
    # --- Define Quantity of interest:
    # Options: 'q1', 'q2', 'q3', 'q12' ,'q21', 'q31', 'q13' , 'q23', 'q32' , 'b1', 'b2' ,'b3'
    # TODO: EXTRA (MInimization Output) 'Minimizer (norm?)' 'angle', 'type', 'curvature'
    # yName = 'q12'
    # # yName = 'b1'
    # yName = 'q3'
    yName = 'angle'
    yName = 'curvature'
    yName = 'MinVec'
    
    # --- Define Parameter this function/quantity depends on:
    # Options: mu1 ,lambda1, rho1 , alpha, beta, theta, gamma
    # xName = 'theta'
    # xName = 'gamma'
    # xName = 'lambda1'
    xName = 'theta'
    # xName = 'alpha'
    
    
    # --- define Interval of x-values:
    xmin = 0
    xmax = 30
    
    # xmin = 0.245
    # xmax = 0.99
    #
    #
    # xmin = 0.14
    # xmax = 0.19
    
    # xmin = 0.01
    # xmax = 3.0
    
    xmin = 0.125
    xmax = 0.250
    
    xmin = 0.05
    xmax = 0.3
    
    xmin = 0.15
    xmax = 0.3
    
    xmin = 0.193
    xmax = 0.24
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    xmin=0.01
    xmiddle = 0.24#0.24242424242424246 #0.24
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    xmax=0.4
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    numPoints_1 = 15
    numPoints_2 = 15
    # test
    JumpVal = 0.194 #0.19515151515151516
    #X_Values before interesting part
    
    tick = (JumpVal-xmin)/numPoints_1
    # tick = (JumpVal-xmin)/numPoints_2
    print('tick:' ,tick)
    
    X_Values_one = np.linspace(xmin, JumpVal-tick, num=numPoints_1)
    X_Values_middle = np.linspace(JumpVal, xmiddle, num=numPoints_2)
    X_Values_two = np.linspace(JumpVal, xmax, num=numPoints_1)
    
    X_Values = np.concatenate([X_Values_one,X_Values_middle,X_Values_two])
    print('X_values_one:', X_Values_one)
    print('X_values_two:', X_Values_two)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    print('X_values:', X_Values)
    
    
    Y_Values = []
    Angle_Values = []
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    other = False
    # other = True
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    for theta in X_Values:
    # for alpha in X_Values:
    
        print('Situation of Lemma1.4')
        q12 = 0.0
        q1 = (1.0/6.0)*harmonicMean(mu1, beta, theta)
        q2 = (1.0/6.0)*arithmeticMean(mu1, beta, theta)
        b1 = prestrain_b1(rho1, beta, alpha,theta)
        b2 = prestrain_b2(rho1, beta, alpha,theta)
        b3 = 0.0
        if gamma == '0':
            q3 = q2
        if gamma == 'infinity':
            q3 = q1
    
        if yName == 'q1':                   # TODO: Better use dictionary?...
            print('q1 used')
            Y_Values.append(q1)
        elif yName =='q2':
            print('q2 used')
            Y_Values.append(q2)
        elif yName =='q3':
            print('q3 used')
            Y_Values.append(q3)
        elif yName =='q12':
            print('q12 used')
            Y_Values.append(q12)
        elif yName =='b1':
            print('b1 used')
            Y_Values.append(b1)
        elif yName =='b2':
            print('b2 used')
            Y_Values.append(b2)
        elif yName =='b3':
            print('b3 used')
            Y_Values.append(b3)
        elif yName == 'angle' or yName =='type' or yName =='curvature' or yName =='MinVec':
            G, angle, Type, curvature = classifyMin_ana(alpha,beta,theta, q3,  mu1, rho1)
            if yName =='angle':
                print('angle used')
                Y_Values.append(angle)
            if yName =='type':
                print('angle used')
                Y_Values.append(type)
            if yName =='curvature':
                print('angle used')
                Y_Values.append(curvature)
            if yName =='MinVec':
                print('Minvec used')
                Y_Values.append(G)
                Angle_Values.append(angle)
    
    
    print("(Output) Values of " + yName + ": ", Y_Values)
    
    
    # idx = find_nearestIdx(Y_Values, 0)
    # print(' Idx of value  closest to 0', idx)
    # ValueClose = Y_Values[idx]
    # print('GammaValue(Idx) with mu_gamma closest to q_3^*', ValueClose)
    #
    #
    #
    # # Find Indices where the difference between the next one is larger than epsilon...
    # jump_idx = []
    # jump_xValues = []
    # jump_yValues = []
    # tmp = X_Values[0]
    # for idx, x in enumerate(X_Values):
    #     print(idx, x)
    #     if idx > 0:
    #         if abs(Y_Values[idx]-Y_Values[idx-1]) > 1:
    #             print('jump candidate')
    #             jump_idx.append(idx)
    #             jump_xValues.append(x)
    #             jump_yValues.append(Y_Values[idx])
    #
    
    
    
    
    #
    #
    # print("Jump Indices", jump_idx)
    # print("Jump X-values:", jump_xValues)
    # print("Jump Y-values:", jump_yValues)
    #
    # y_plotValues = [Y_Values[0]]
    # x_plotValues = [X_Values[0]]
    # # y_plotValues.extend(jump_yValues)
    # for i in jump_idx:
    #     y_plotValues.extend([Y_Values[i-1], Y_Values[i]])
    #     x_plotValues.extend([X_Values[i-1], X_Values[i]])
    #
    #
    # y_plotValues.append(Y_Values[-1])
    # # x_plotValues = [X_Values[0]]
    # # x_plotValues.extend(jump_xValues)
    # x_plotValues.append(X_Values[-1])
    #
    #
    # print("y_plotValues:", y_plotValues)
    # print("x_plotValues:", x_plotValues)
    # # Y_Values[np.diff(y) >= 0.5] = np.nan
    
    #
    # #get values bigger than jump position
    # x_rest = X_Values[X_Values>x_plotValues[1]]
    #
    # Y_Values = np.array(Y_Values)  #convert the np array
    #
    # y_rest = Y_Values[X_Values>x_plotValues[1]]
    # # y_rest = Y_Values[np.nonzero(X_Values>x_plotValues[1]]
    # print('X_Values:', X_Values)
    # print('Y_Values:', Y_Values)
    # print('x_rest:', x_rest)
    # print('y_rest:', y_rest)
    # print('np.nonzero(X_Values>x_plotValues[1]', np.nonzero(X_Values>x_plotValues[1]) )
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    print('X_values:', X_Values)
    print('Y_values:', Y_Values)
    
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # ---------------- Create Plot -------------------
    plt.figure()
    
    f,ax=plt.subplots(1)
    
    # plt.title(r''+ yName + '-Plot')
    # plt.plot(X_Values, Y_Values,linewidth=2, '.k')
    # plt.plot(X_Values, Y_Values,'.k',markersize=1)
    # plt.plot(X_Values, Y_Values,'.',markersize=0.8)
    
    # plt.plot(X_Values, Y_Values)
    
    # ax.plot([[0],X_Values[-1]], [Y_Values[0],Y_Values[-1]])
    # ax.plot([x_plotValues[0],x_plotValues[1]], [y_plotValues[0],y_plotValues[1]] , 'b')
    # ax.plot(x_rest, y_rest, 'b')
    
     #Define jump
    JumpVal = 0.19
    X_Values = np.array(X_Values)
    Y_Values = np.array(Y_Values)
    Angle_Values = np.array(Angle_Values)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # X_one = X_Values[X_Values<0.19]
    # Y_one = Y_Values[X_Values<0.19]
    # Angle_one=Angle_Values[X_Values<0.19]
    # X_two = X_Values[X_Values>=0.19]
    # Y_two = Y_Values[X_Values>=0.19]
    # Angle_two=Angle_Values[X_Values>=0.19]
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # X_Values = X_two
    # Y_Values = Y_two
    # # Angle_Values = Angle_two
    # print('X_one:', X_Values)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    color=['r','b','g']
    cmap = cm.get_cmap(name='rainbow')
    Y_arr = np.asarray(Y_Values, dtype=float)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    Angle_Values = np.asarray(Angle_Values, dtype=float)
    # Angle_two = np.asarray(Angle_two, dtype=float)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    X_Values = np.asarray(X_Values, dtype=float)
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Y_one = np.asarray(Y_one, dtype=float)
    # Angle_one = np.asarray(Angle_one, dtype=float)
    # X_one = np.asarray(X_one, dtype=float)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    # print('X_one:', X_one)
    # print('Y_one:', Y_one)
    # print('Angle_one:', Angle_one)
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    print('X_Values:', X_Values)
    print('Y_arr:', Y_arr)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # print('Angle_two:', Angle_two)
    #
    # print('X_Values:', X_Values)
    # print('Y_arr:', Y_arr)
    # print('Angle_two:', Angle_two)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    
    
    # Or = np.zeros_like(Y_arr)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Or_tmp = np.ones_like(X_Values)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    # Or = np.concatenate(([X_Values],[Or_tmp])  ,axis=1)
    # Or = np.array([X_Values,Or_tmp])
    
    print('np.transpose(X_Values)', np.transpose(X_Values))
    print('X_Values.shape', X_Values.shape[0] )
    print('reshape X_Values', X_Values.reshape(X_Values.shape[0],1).shape)
    
    print('ones.', np.ones((5,1),dtype=float))
    
    
    
    
    
    # Or = np.hstack([np.transpose(X_Values),np.transpose(Or_tmp)])
    # Or = np.hstack((X_Values,np.ones((X_Values.shape[0],1), dtype=X_Values.dtype)))
    X_Values= X_Values.reshape(X_Values.shape[0],1)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # X_one= X_one.reshape(X_one.shape[0],1)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Or_one = np.hstack((X_one,np.zeros((X_one.shape[0],1),dtype=float)))
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    Or = np.hstack((X_Values,np.zeros((X_Values.shape[0],1),dtype=float)))
    print('Or:', Or)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # print('Or_one:', Or_one)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # -----------------------------------------------------------------------------
    
    #normalize
    sum_of_rows = Y_arr.sum(axis=1)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    print('sum_of_rows:', sum_of_rows)
    # Y_arrN = Y_arr / sum_of_rows[:,np.newaxis]
    Y_arrN = Y_arr / np.linalg.norm(Y_arr, ord=2, axis=1, keepdims=True)
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Y_arrN = Y_arr / np.sqrt(np.sum(Y_arr**2))
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # print('normalized Y_arrN_OLD:', Y_arrN)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    print('normalized Y_arrN:', Y_arrN)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # sum_of_rows_one = Y_one.sum(axis=1)
    # Y_oneN = Y_one / sum_of_rows_one[:,np.newaxis]
    # print('normalized Y_one:', Y_oneN)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    plt.grid(b=True, which='major')
    
    
    # plt.quiver([Or[:,0], Or[:,1]] , Y_arrN[:,0], Y_arrN[:,1])
    print(Or[:,1])
    print(Or[:,0])
    print(Y_arrN[:,0])
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    #
    # print('Or_one[:,1]',Or_one[:,1])
    # print(Or_one[:,0])
    # print(Y_oneN[:,0])
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    norm = Normalize()
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    norm.autoscale(Angle_Values)    #here full array needed?!
    # norm.autoscale(Angle_one)
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    colormap = cm.RdBu
    
    
    
    
    
    
    
    # Plot only every second one
    skip = (slice(None,None,2))
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # skip = (slice(None,None,2))
    
    widths = np.linspace(0, 2, X_Values.size)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    # Q = ax.quiver(Or[:,0][skip], Or[:,1][skip] , Y_arrN[:,0][skip], Y_arrN[:,1][skip], color = colormap(norm(Angle_arr)), angles='xy', scale=5, units='xy', alpha=0.8,
    # headwidth=2)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Q_one = ax.quiver(Or_one[:,0][skip], Or_one[:,1][skip] , Y_one[:,0][skip], Y_one[:,1][skip], color = colormap(norm(Angle_Values)), angles='xy', scale=5, units='xy', alpha=0.8,
    # headwidth=2)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)), angles='xy', scale=15, units='xy', alpha=0.8,
    # headwidth=2)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)), angles='xy',  units='xy', alpha=0.8, scale=10,
    # headwidth=2, linewidths=widths, edgecolors='k')
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)), angles='xy',  units='xy', alpha=0.8, scale=20,
    # headwidth=0.01, headlength=5, width=0.01, edgecolors='k')
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)), angles='xy',  units='xy', alpha=0.8, scale=20, linewidth=0.1, edgecolors='k')
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)) ,  alpha=0.8, scale=20, linewidth=0.05, edgecolors='k', scale_units='width')
    # Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)) ,  alpha=0.8,  scale=15, scale_units='x', linewidth=0.3)
    Q = ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_Values)) ,  alpha=1.0, scale=10 , )
    # (Y_Values[:,0].max()-Y_Values[:,0].min())
    
    # f.colorbar(Q,extend='max')
    # ax.colorbar(Q )
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    # ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], scale=5, units='xy')
    # ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], Angle_arr, angles='xy', scale=5, units='xy')
    # ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_arr)), angles='xy', scale=15, units='xy')
    # ax.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], color = colormap(norm(Angle_arr)), angles='xy', scale=5, units='xy', alpha=0.8,
    # headwidth=2)
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    ax.scatter(Or[:,0], Or[:,1])
    # ax.scatter(Or_one[:,0], Or_one[:,1], c='black', s=10)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # ax.set_aspect('equal')
    # ax.set_aspect('auto')
    # ax.axis([0.1,0.4 , -0.1, 0.75])
    # plt.quiver(Or[:,0], Or[:,1] , Y_arrN[:,0], Y_arrN[:,1], scale=1)
    
    # ax.set_xlim((0.1, X_Values[:,0].max()))
    # ax.set_ylim((-0.1, Y_arrN[:,1].max()))
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    plt.axvline(JumpVal,ymin=0, ymax= 1, color = 'g',alpha=0.5, linestyle = 'dashed')
    plt.axvline(xmiddle,ymin=0, ymax= 1, color = 'g',alpha=0.5, linestyle = 'dashed')
    plt.axvline(0.13606060606060608,ymin=0, ymax= 1, color = 'g',alpha=0.5, linestyle = 'dashed')
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # ax.yaxis.set_major_locator(plt.MultipleLocator(np.pi / 2))
    # ax.yaxis.set_minor_locator(plt.MultipleLocator(np.pi / 12))
    # ax.yaxis.set_major_formatter(plt.FuncFormatter(format_func))
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    ax.set_xlim((0.1, X_Values[:,0].max()+0.1))
    ax.set_ylim((-0.05, 0.1 ))
    ax.set_xticks(np.arange(0, 0.45, step=0.05))
    # ax.set(aspect=1)
    ax.tick_params(labelleft = False)
    cbar = f.colorbar(cm.ScalarMappable(norm=norm, cmap=colormap), ax=ax, ticks=[0 ,np.pi/2])
    cbar.ax.set_yticklabels(['0', r"$\pi/2$"])
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    plt.show()
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    # plt.quiver(Or , Y_arrN[:,0], Y_arrN[:,1])
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    plt.scatter(Or[:,0], Or[:,1], c='black', s=10)
    if other:
        for i, y in enumerate(Y_Values):
            maxes = 1.1*np.amax(abs(Y_Values[i]), axis = 0)
            tmp = Y_Values[i]
            print('tmp:', tmp)
    
            tmp_normalized = tmp / np.sqrt(np.sum(tmp**2))
            print('tmp_normalized:', tmp_normalized)
            # origin = np.array([[0, 0, 0],[0, 0, 0]]) # origin point
            origin = np.array([X_Values[i], 1])
            # origin = np.array([0,0])
            print('origin:', origin)
            # plt.scatter(origin[0],origin[1])
            # plt.plot(origin, 'ok')
            # plt.axis('equal')
            # plt.axis('auto')
            plt.xlim([-0.1, 0.4])
            plt.ylim([-0.1, 4])
            # plt.xlim([-maxes[0], maxes[0]])
            # plt.ylim([-maxes[1], maxes[1]])
        # plt.quiver(*origin, tmp[0], tmp[1], headlength=4)
            # plt.axes().arrow(*origin, tmp[0], tmp[1],head_width=0.05, head_length = 0.1, color = color[1])
            # plt.arrow(*origin, tmp[0], tmp[1],head_width=0.05, head_length = 0.1, color = color[1])
            # plt.arrow(*origin, tmp_normalized[0], tmp_normalized[1], color = color[1])
            # plt.arrow(*origin, tmp_normalized[0], tmp_normalized[1], head_width=0.05, head_length = 0.1, color = color[1])
            # plt.arrow(*origin, tmp_normalized[0], tmp_normalized[1], head_width=0.05, head_length = 0.1, color = cmap(i))
            # plt.arrow(origin[i,0], origin[i,1], tmp_normalized[0], tmp_normalized[1], head_width=0.05, head_length = 0.1, color = cmap(i))
            # plt.arrow(origin[i,0], origin[i,1], tmp_normalized[0], tmp_normalized[1], head_width=0.05, head_length = 0.1, color = cmap(i))
            # w = 0.005 * (y - ymin) / (ymax - ymin)
            w = 0.005
            plt.quiver(Or[i,0], Or[i,1] , Y_arrN[i,0], Y_arrN[i,1], color = colormap(norm(Angle_Values)), angles='xy',  units='xy', alpha=0.8,
            headwidth=2, width=w, edgecolors='k')
            plt.grid(b=True, which='major')
        # plt.quiver(*origin, test[0], test[1], color=['r','b','g'], scale=21)
        # plt.quiver(*origin, Y_Values[0][:,0], Y_Values[0][:,1], color=['r','b','g'], scale=21)
        # plt.quiver(*origin, Y_Values[:,0], V[:,1], color=['r','b','g'], scale=21)
        # plt.quiver(*origin, Y_Values[:,0], V[:,1], color=['r','b','g'], scale=21)
    
    
    
    
    
        plt.show()
        # ax.plot(X_Values, Y_Values)
        # ax.scatter(X_Values, Y_Values)
        # plt.plot(x_plotValues, y_plotValues,'.')
        # plt.scatter(X_Values, Y_Values, alpha=0.3)
        # plt.scatter(X_Values, Y_Values)
        # plt.plot(X_Values, Y_Values,'.')
        # plt.plot([X_Values[0],X_Values[-1]], [Y_Values[0],Y_Values[-1]])
        # plt.axis([0, 6, 0, 20])
    
        plt.xlabel(xName)
        # plt.ylabel(yName)
    
        plt.ylabel('$\kappa$')
    
        # ax.yaxis.set_major_formatter(ticker.FormatStrFormatter('%g $\pi$'))
        # ax.yaxis.set_major_locator(ticker.MultipleLocator(base=0.1))
    
    
    
    
        ax.grid(True)
    
    Klaus Böhnlein's avatar
    Klaus Böhnlein committed
    
    # # if angle PLOT :
    # ax.yaxis.set_major_locator(plt.MultipleLocator(np.pi / 2))
    # ax.yaxis.set_minor_locator(plt.MultipleLocator(np.pi / 12))
    #
    # ax.yaxis.set_major_formatter(plt.FuncFormatter(format_func))
    #
    # # Plot every other line.. not the jumps...
    # tmp = 1
    # for idx, x in enumerate(x_plotValues):
    #     if idx > 0 and tmp == 1:
    #         # plt.plot([x_plotValues[idx-1],x_plotValues[idx]] ,[y_plotValues[idx-1],y_plotValues[idx]] )
    #         ax.plot([x_plotValues[idx-1],x_plotValues[idx]] ,[y_plotValues[idx-1],y_plotValues[idx]] ,'b')
    #         tmp = 0
    #     else:
    #         tmp = 1
    
    # plt.plot([x_plotValues[0],x_plotValues[1]] ,[y_plotValues[0],y_plotValues[1]] )
    # plt.plot([x_plotValues[2],x_plotValues[3]] ,[y_plotValues[2],y_plotValues[3]] )
    # plt.plot([x_plotValues[4],x_plotValues[5]] ,[y_plotValues[4],y_plotValues[5]] )
    # plt.plot([x_plotValues[6],x_plotValues[7]] ,[y_plotValues[6],y_plotValues[7]] )
    
    #
    # for x in jump_xValues:
    #     plt.axvline(x,ymin=0, ymax= 1, color = 'g',alpha=0.5, linestyle = 'dashed')
    
    # plt.axvline(x_plotValues[1],ymin=0, ymax= 1, color = 'g',alpha=0.5, linestyle = 'dashed')
    
    # plt.axhline(y = 1.90476, color = 'b', linestyle = ':', label='$q_1$')
    # plt.axhline(y = 2.08333, color = 'r', linestyle = 'dashed', label='$q_2$')
    # plt.legend()
    # plt.show()
    # #---------------------------------------------------------------