Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020

Version 3.1.1
matplotlib
Fork me on GitHub

目录

Related Topics

自定义颜色条教程

本教程演示如何在没有附加绘图的情况下构建颜色条。

自定义颜色条

ColorbarBase 来源于 ScalarMappable 并将颜色条放在指定的轴上,这样它就拥有了独立颜色条所需的一切。它可以用来为给定的颜色映射制作颜色条;它不需要像图像这样的可映射对象。在本教程中,我们将探讨如何使用独立的颜色条。

基本连续颜色条

设置颜色映射和norm以对应将使用颜色条的数据。然后通过调用 ColorbarBase 并指定轴、颜色映射、范数和方向作为参数。在这里,我们创建了一个基本的带有刻度和标签的连续颜色条。有关更多信息,请参阅 colorbar 应用程序编程接口。

import matplotlib.pyplot as plt
import matplotlib as mpl

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.cm.cool
norm = mpl.colors.Normalize(vmin=5, vmax=10)

cb1 = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                norm=norm,
                                orientation='horizontal')
cb1.set_label('Some Units')
fig.show()
自定义颜色条教程

离散间隔颜色条

第二个示例说明了 ListedColormap 从一组列出的颜色生成颜色映射, colors.BoundaryNorm() 它基于离散的间隔和扩展的端点生成一个颜色映射索引,以显示“过”和“欠”值颜色。over和under用于显示规范化之外的数据 [0,1] 范围。在这里,我们将颜色作为灰色阴影传递,作为编码0-1范围内的浮点的字符串。

如果A ListedColormap 如果使用,则边界数组的长度必须大于颜色列表的长度。边界必须单调递增。

这一次,除了前面的参数外,我们还传递了更多的参数 ColorbarBase . 要在颜色栏上显示超出范围的值,必须使用 延伸 关键字参数。使用 延伸 ,必须指定两个额外的边界。最后,spacing参数确保间隔按比例显示在颜色栏上。

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.colors.ListedColormap(['red', 'green', 'blue', 'cyan'])
cmap.set_over('0.25')
cmap.set_under('0.75')

bounds = [1, 2, 4, 7, 8]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
cb2 = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                norm=norm,
                                boundaries=[0] + bounds + [13],
                                extend='both',
                                ticks=bounds,
                                spacing='proportional',
                                orientation='horizontal')
cb2.set_label('Discrete intervals, some other units')
fig.show()
自定义颜色条教程

带自定义扩展长度的颜色条

在这里,我们将演示自定义长度的颜色条扩展的用法,该扩展用于具有离散间隔的颜色条。要使每个延伸部分的长度与内饰颜色的长度相同,请使用 extendfrac='auto' .

fig, ax = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)

cmap = mpl.colors.ListedColormap(['royalblue', 'cyan',
                                  'yellow', 'orange'])
cmap.set_over('red')
cmap.set_under('blue')

bounds = [-1.0, -0.5, 0.0, 0.5, 1.0]
norm = mpl.colors.BoundaryNorm(bounds, cmap.N)
cb3 = mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                norm=norm,
                                boundaries=[-10] + bounds + [10],
                                extend='both',
                                extendfrac='auto',
                                ticks=bounds,
                                spacing='uniform',
                                orientation='horizontal')
cb3.set_label('Custom extension lengths, some other units')
fig.show()
自定义颜色条教程