How can I create a standard colorbar for a series of plots in python

前端 未结 4 1241
无人及你
无人及你 2020-11-28 03:50

I using matplotlib to plot some data in python and the plots require a standard colour bar. The data consists of a series of NxM matrices containing frequency information so

4条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-28 04:34

    Not to steal @ianilis's answer, but I wanted to add an example...

    There are multiple ways, but the simplest is just to specify the vmin and vmax kwargs to imshow. Alternately, you can make a matplotlib.cm.Colormap instance and specify it, but that's more complicated than necessary for simple cases.

    Here's a quick example with a single colorbar for all images:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # Generate some data that where each slice has a different range
    # (The overall range is from 0 to 2)
    data = np.random.random((4,10,10))
    data *= np.array([0.5, 1.0, 1.5, 2.0])[:,None,None]
    
    # Plot each slice as an independent subplot
    fig, axes = plt.subplots(nrows=2, ncols=2)
    for dat, ax in zip(data, axes.flat):
        # The vmin and vmax arguments specify the color limits
        im = ax.imshow(dat, vmin=0, vmax=2)
    
    # Make an axis for the colorbar on the right side
    cax = fig.add_axes([0.9, 0.1, 0.03, 0.8])
    fig.colorbar(im, cax=cax)
    
    plt.show()
    

    enter image description here

提交回复
热议问题