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

时间:2015-12-16 14:17:54

标签: python matplotlib

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

以前的某些事情(参见here):

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

但是在mpl 1.5中运行此功能不会返回新的色彩映射,例如viridismagma等。在新的参考页面上,代码实际上对名称进行了硬编码(参见here),但我想知道是否仍然可以进行类似的查询?

4 个答案:

答案 0 :(得分:10)

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

  

matplotlib.pyplot.colormaps()

     

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

此返回的列表包括viridis

中的magmainfernoplasma1.5.0

答案 1 :(得分:1)

以下是基于 pr94 方法的代码,该方法在标题中绘制每个带有 id 的颜色图,但不会为每个单独的颜色图打开图形。
我已经使用它在所有 166 个颜色图(mpl 版本 3.4.2)的一张图片中创建了一个概览。
Overview of all colormaps

import matplotlib as mpl
import matplotlib.pyplot as plt

def plot_all_cmaps():
    N_ROWS, N_COLS = 8, 7 # 13, 13 <-- for all in one figure 
    HEIGHT, WIDTH = 7, 14

    cmap_ids = plt.colormaps()
    n_cmaps = len(cmap_ids)
    
    print(f'mpl version: {mpl.__version__},\nnumber of cmaps: {n_cmaps}')
    
    index = 0
    while index < n_cmaps:
        fig, axes = plt.subplots(N_ROWS, N_COLS, figsize=(WIDTH, HEIGHT))
        for row in range(N_ROWS):
            for col in range(N_COLS):
                ax = axes[row, col]
                cmap_id = cmap_ids[index]
                cmap = plt.get_cmap(cmap_id)
                mpl.colorbar.ColorbarBase(ax, cmap=cmap,
                                          orientation='horizontal')
                ax.set_title(f"'{cmap_id}', {index}", fontsize=8)
                ax.tick_params(left=False, right=False, labelleft=False,
                               labelbottom=False, bottom=False)
                
                last_iteration = index == n_cmaps-1
                if (row==N_ROWS-1 and col==N_COLS-1) or last_iteration:
                    plt.tight_layout()
                    #plt.savefig('colormaps'+str(index)+'.png')
                    plt.show()
                    if last_iteration: return
                index += 1

plot_all_cmaps()

答案 2 :(得分:0)

下面是一些代码,用于绘制链接到其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)

输出看起来像这样

口音

enter image description here

Accent_r

enter image description here

蓝调

enter image description here

等...

答案 3 :(得分:0)

看来只要调用它的名字就可以直接查看colormap实例了。例如,col_map = plt.get_cmap(cmap),并且您在终端(例如 spyder)中键入 col_map,颜色图将显示为绘图。但是,我不确定是什么触发了这种外观,或者是否有任何必要的代码来指定此选项?