【问题标题】:Plotting discrete colorbar in legend style using Matplotlib使用 Matplotlib 以图例样式绘制离散颜色条
【发布时间】:2016-10-10 04:34:06
【问题描述】:

有时,我想以 pcolormesh 样式绘制离散值。

例如,表示一个 100x100 形状的二维数组,其中包含 int 0~7

data  = np.random.randint(8, size=(100,100))
cmap = plt.cm.get_cmap('PiYG', 8) 
plt.pcolormesh(data,cmap = cmap,alpha = 0.75)
plt.colorbar()  

如图所示:

如何生成图例样式的颜色条。换句话说,每个颜色框都对应它的值(例如粉色颜色框--> 0)

这里有一个插图(不适合这个例子):

【问题讨论】:

    标签: python arrays python-2.7 matplotlib visualization


    【解决方案1】:

    也许最简单的方法是创建相应数量的 Patch 实例:

    import matplotlib.patches as mpatches
    import matplotlib.pyplot as plt
    import numpy as np
    
    data  = np.random.randint(8, size=(100,100))
    cmap = plt.cm.get_cmap('PiYG', 8) 
    plt.pcolormesh(data,cmap = cmap,alpha = 0.75)
    # Set borders in the interval [0, 1]
    bound = np.linspace(0, 1, 9)
    # Preparing borders for the legend
    bound_prep = np.round(bound * 7, 2)
    # Creating 8 Patch instances
    plt.legend([mpatches.Patch(color=cmap(b)) for b in bound[:-1]],
               ['{} - {}'.format(bound_prep[i], bound_prep[i+1] - 0.01) for i in range(8)])
    

    【讨论】:

    • 感谢您的解决方案!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-10
    • 2021-10-05
    • 2014-12-20
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    相关资源
    最近更新 更多