mathplotlib imshow complex 2D array

后端 未结 4 1737
心在旅途
心在旅途 2021-02-05 16:32

Is there any good way how to plot 2D array of complex numbers as image in mathplotlib ?

It makes very much sense to map magnitude of complex number as \"brightness\" or

4条回答
  •  遇见更好的自我
    2021-02-05 17:03

    this does almost the same of @Hooked code but very much faster.

    import numpy as np
    from numpy import pi
    import pylab as plt
    from colorsys import hls_to_rgb
    
    def colorize(z):
        r = np.abs(z)
        arg = np.angle(z) 
    
        h = (arg + pi)  / (2 * pi) + 0.5
        l = 1.0 - 1.0/(1.0 + r**0.3)
        s = 0.8
    
        c = np.vectorize(hls_to_rgb) (h,l,s) # --> tuple
        c = np.array(c)  # -->  array of (3,n,m) shape, but need (n,m,3)
        c = c.swapaxes(0,2) 
        return c
    
    N=1000
    x,y = np.ogrid[-5:5:N*1j, -5:5:N*1j]
    z = x + 1j*y
    
    w = 1/(z+1j)**2 + 1/(z-2)**2
    img = colorize(w)
    plt.imshow(img)
    plt.show()
    

提交回复
热议问题