Plot a black-and-white binary map in matplotlib

前端 未结 2 1317
谎友^
谎友^ 2020-12-09 14:53

I\'m using python to simulate some automation models, and with the help of matplotlib I\'m producing plots like the one shown below.

相关标签:
2条回答
  • 2020-12-09 15:33

    There is an alternative method to Yann's answer that gives you finer control. Matplotlib's imshow can take a MxNx3 matrix where each entry is the RGB color value - just set them to white [1,1,1] or black [0,0,0] accordingly. If you want three colors it's easy to expand this method.

    import matplotlib.pyplot as plt
    import numpy as np
    
    # Z is your data set
    N = 100
    Z = np.random.random((N,N))
    
    # G is a NxNx3 matrix
    G = np.zeros((N,N,3))
    
    # Where we set the RGB for each pixel
    G[Z>0.5] = [1,1,1]
    G[Z<0.5] = [0,0,0]
    
    plt.imshow(G,interpolation='nearest')
    plt.show()
    

    enter image description here

    0 讨论(0)
  • 2020-12-09 15:39

    You can change the color map you are using via the cmap keyword. The color map 'Greys' provides the effect you want. You can find a list of available maps on the scipy website.

    import matplotlib.pyplot as plt
    import numpy as np
    
    np.random.seed(101)
    g = np.floor(np.random.random((100, 100)) + .5)
    
    plt.subplot(211)
    plt.imshow(g)
    plt.subplot(212)
    plt.imshow(g, cmap='Greys',  interpolation='nearest')
    plt.savefig('blkwht.png')
    
    plt.show()
    

    which results in:

    enter image description here

    0 讨论(0)
提交回复
热议问题