如何查看matplotlib 1.5中的所有色彩贴图?

lab*_*lab 5 python matplotlib

我想知道是否有一个函数调用可以给我matplotlib 1.5中可用的所有colormaps的名称?

它曾经是可能的(见这里):

import matplotlib.pyplot as plt
cmaps = sorted(m for m in plt.cm.datad if not m.endswith("_r"))
Run Code Online (Sandbox Code Playgroud)

但是在mpl 1.5中运行它不会返回新的颜色映射,例如viridis,magma等等.在新的参考页面上,代码实际上是硬编码名称(见这里),但我想知道是否仍然可以进行类似的查询?

pr9*_*r94 12

这是一些绘制链接到其 ID 的所有可用颜色图的代码

import matplotlib as mpl
import matplotlib.pyplot as plt

def plot_colorMaps(cmap):

    fig, ax = plt.subplots(figsize=(4,0.4))
    col_map = plt.get_cmap(cmap)
    mpl.colorbar.ColorbarBase(ax, cmap=col_map, orientation = 'horizontal')

    plt.show()

for cmap_id in plt.colormaps():
    print(cmap_id)
    plot_colorMaps(cmap_id)
Run Code Online (Sandbox Code Playgroud)

输出看起来像这样

口音

在此处输入图片说明

Accent_r

在此处输入图片说明

蓝调

在此处输入图片说明

等等...


tmd*_*son 10

plt.colormaps()返回所有已注册色彩映射的列表.来自文档:

matplotlib.pyplot.colormaps()

Matplotlib提供了许多色彩映射,其他的可以使用register_cmap()添加.此函数记录内置的色彩映射,如果调用,还将返回所有已注册色彩映射的列表.

这将返回该列表包括viridis,magma,infernoplasma为我1.5.0


XII*_*II_ 10

下面是基于 pr94\xe2\x80\x99s 方法的代码,该方法使用标题中的 id 绘制每个颜色图,但不会为每个颜色图打开一个图形。
\nI\xe2\x80\x99ve 使用它在一张图片中创建所有 166 个颜色图的概述(mpl 版本 3.4.2)。
\n所有颜色图概述

\n
import matplotlib as mpl\nimport matplotlib.pyplot as plt\n\ndef plot_all_cmaps():\n    N_ROWS, N_COLS = 8, 7 # 13, 13 <-- for all in one figure \n    HEIGHT, WIDTH = 7, 14\n\n    cmap_ids = plt.colormaps()\n    n_cmaps = len(cmap_ids)\n    \n    print(f\'mpl version: {mpl.__version__},\\nnumber of cmaps: {n_cmaps}\')\n    \n    index = 0\n    while index < n_cmaps:\n        fig, axes = plt.subplots(N_ROWS, N_COLS, figsize=(WIDTH, HEIGHT))\n        for row in range(N_ROWS):\n            for col in range(N_COLS):\n                ax = axes[row, col]\n                cmap_id = cmap_ids[index]\n                cmap = plt.get_cmap(cmap_id)\n                mpl.colorbar.ColorbarBase(ax, cmap=cmap,\n                                          orientation=\'horizontal\')\n                ax.set_title(f"\'{cmap_id}\', {index}", fontsize=8)\n                ax.tick_params(left=False, right=False, labelleft=False,\n                               labelbottom=False, bottom=False)\n                \n                last_iteration = index == n_cmaps-1\n                if (row==N_ROWS-1 and col==N_COLS-1) or last_iteration:\n                    plt.tight_layout()\n                    #plt.savefig(\'colormaps\'+str(index)+\'.png\')\n                    plt.show()\n                    if last_iteration: return\n                index += 1\n\nplot_all_cmaps()\n
Run Code Online (Sandbox Code Playgroud)\n