28 lines
837 B
Python
28 lines
837 B
Python
import numpy as np
|
|
import matplotlib.pyplot as plt
|
|
|
|
def rect(x,y,sx,sy,col): # zeichne gefülltes Rechteck
|
|
xc = np.array([x,x+sx,x+sx,x])
|
|
yc = np.array([y,y,y+sy,y+sy])
|
|
plt.fill(xc, yc, col, edgecolor=col)
|
|
|
|
def hinton(matrix): # zeichne Hinton-Diagramm
|
|
plt.clf()
|
|
plt.axis('off')
|
|
plt.axis('equal')
|
|
height, width = matrix.shape
|
|
rect(0,0,width,height,'gray')
|
|
|
|
for x in range(width):
|
|
for y in range(height):
|
|
w = matrix[y][x]
|
|
sz = np.sqrt(abs(w)/np.abs(matrix).max()/8)
|
|
col = 'white' if w > 0 else 'black'
|
|
rect(x+0.5-sz, y+0.5-sz, 2*sz, 2*sz, col)
|
|
|
|
if __name__ == '__main__':
|
|
np.random.seed(8216544)
|
|
# Hinton-Diagramm einer Zufallsmatrix
|
|
hinton(np.random.rand(20, 20) - 0.5)
|
|
plt.title('Beispiel Hinton-Diagramm 20x20')
|
|
plt.show() |