我想知道如何简单地扭转一个给定的颜色地图的颜色顺序,以便使用它与plot_surface。


当前回答

在matplotlib中,颜色映射不是一个列表,但它以colormap.colors的形式包含其颜色列表。以及matplotlib模块。colors提供了一个函数ListedColormap()从列表中生成颜色映射。你可以反转任何颜色的地图

colormap_r = ListedColormap(colormap.colors[::-1])

其他回答

目前还没有反转任意颜色映射的内置方法,但一个简单的解决方案是实际上不修改颜色条,而是创建一个反向Normalize对象:

from matplotlib.colors import Normalize

class InvertedNormalize(Normalize):
    def __call__(self, *args, **kwargs):
        return 1 - super(InvertedNormalize, self).__call__(*args, **kwargs)

然后你可以使用这个plot_surface和其他Matplotlib绘图函数。

inverted_norm = InvertedNormalize(vmin=10, vmax=100)
ax.plot_surface(..., cmap=<your colormap>, norm=inverted_norm)

这将适用于任何Matplotlib颜色地图。

在Matplotlib 2.0中,对于ListedColormap和LinearSegmentedColorMap对象有一个reversed()方法,因此您可以直接执行

Cmap_reversed = cmap.reversed()

这里是文档。

标准配色也都有反转版本。它们的名字是一样的,只是后面加了_r。(文档)。

在matplotlib中,颜色映射不是一个列表,但它以colormap.colors的形式包含其颜色列表。以及matplotlib模块。colors提供了一个函数ListedColormap()从列表中生成颜色映射。你可以反转任何颜色的地图

colormap_r = ListedColormap(colormap.colors[::-1])

解决方法很简单。假设您想要使用“autumn”配色方案。标准版本:

cmap = matplotlib.cm.autumn

要反转颜色图谱,使用get_cmap()函数并将'_r'附加到颜色图谱标题,如下所示:

cmap_reversed = matplotlib.cm.get_cmap('autumn_r')