Home > Software engineering >  Python - Plot linear percentage graph
Python - Plot linear percentage graph

Time:11-13

I have this numpy array:

[
 [    0     0     0     0     0     0     2     0     2     0     0     1    26     0]
 [    0     0     0     0     0     0     0     0     0     0     0     0     0     4]
 [21477 61607 21999 17913 22470 32390 11987 41977 81676 20668 17997 15278 46281 19884]
 [ 5059 13248  5498  3866  2144  6161  2361  8734 16914  3724  4614  3607 11305  2880]
 [  282  1580   324   595   218   525   150   942   187   232   430   343   524   189]
 [ 1317  6416  1559   882   599  2520   525  2560 19197   729  1391  1727  2044  1198]
]

I've just created logarithm heatmap which works as intended. However I would like to create another heat map that would represent linear scale across rows, and shows each position in matrix corresponding percentage value, while sum of row would give 100%. Without using seaborn or pandas Something like this:

enter image description here

CodePudding user response:

Here you go:

import matplotlib.pyplot as plt
import numpy as np
a = np.array([[0,0,0,0,0,0,2,0,2,0,0,1,26,0],
          [0,0,0,0,0,0,0,0,0,0,0,0,0,4],
          [21477,61607,21999,17913,22470,32390,11987,41977,81676,20668,17997,15278,46281,19884],
          [5059,13248,5498,3866,2144,6161,2361,8734,16914,3724,4614,3607,11305,2880],
          [282,1580,324,595,218,525,150,942,187,232,430,343,524,189],
          [1317,6416,1559,882,599,2520,525,2560,19197,729,1391,1727,2044,1198]])
# normalize
normalized_a = a/np.sum(a,axis=1)[:,None]
# plot
plt.imshow(normalized_a)
plt.show()

enter image description here

  • Related