Home > database >  Plotting value of each node using Python
Plotting value of each node using Python

Time:03-14

I would like to plot the values of matrix A on y-axis as a function of node number on x-axis. However, since I have a 5x5 matrix, I don't wish to define the node numbers manually. For instance, node 1 corresponds to 2.53734572e-01, node 2 to -1.08940733e-01,..., node 6 to -5.02000098e-01 and so on.

import numpy as np
import matplotlib.pyplot as plt
Node=np.array([[1,2,3,4,5],[6,7,8,9,10]])
A=np.array([[ 2.53734572e-01, -1.08940733e-01,  3.26138649e-03,
        -6.10246692e-03, -2.59115145e-02],
       [-5.02000098e-01,  1.08933714e-01, -3.65540228e-02,
         5.93536044e-03,  3.88767438e-02],
       [-1.42775456e 00,  4.52103243e-01, -2.33067190e-02,
         7.27554880e-03,  1.15638039e-01],
       [ 4.81030592e-01, -8.91302226e-02,  1.40486724e-03,
         2.28801066e-02, -3.83389182e-02],
       [ 8.39965176e-01, -2.81589587e-01,  2.24843962e-01,
        -8.47758268e-03, -6.84721033e-02]])


plt.scatter(Node, A)
plt.xlabel('Node')
plt.ylabel('Velocity')

CodePudding user response:

We can reduce the matrix to one dimension and use numpy.arange on the length of the matrix:

import numpy as np
import matplotlib.pyplot as plt

ys=np.array([[ 2.53734572e-01, -1.08940733e-01,  3.26138649e-03,
        -6.10246692e-03, -2.59115145e-02],
       [-5.02000098e-01,  1.08933714e-01, -3.65540228e-02,
         5.93536044e-03,  3.88767438e-02],
       [-1.42775456e 00,  4.52103243e-01, -2.33067190e-02,
         7.27554880e-03,  1.15638039e-01],
       [ 4.81030592e-01, -8.91302226e-02,  1.40486724e-03,
         2.28801066e-02, -3.83389182e-02],
       [ 8.39965176e-01, -2.81589587e-01,  2.24843962e-01,
        -8.47758268e-03, -6.84721033e-02]]).flatten()

nodes=np.arange(len(y))

plt.scatter(nodes, ys)
plt.xlabel('Node')
plt.ylabel('Velocity')
plt.show()

output

  • Related