如何查看matplotlib中所有可用的颜色Map表?

h4cxqtbf  于 2023-10-24  发布在  其他
关注(0)|答案(7)|浏览(103)

我想知道是否有一个函数调用可以给予我matplotlib中所有可用的颜色Map表的名称?
它曾经是可能的东西沿着线(见here):

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

但是在mpl 1.5中运行这个并不返回新的颜色Map表,比如viridismagma等等。在新的参考页面上,代码实际上硬编码了名称(参见here),但是我想知道是否仍然可以进行类似的查询?

yruzcnhs

yruzcnhs1#

plt.colormaps()返回所有已注册的颜色Map表的列表。来自文档:
matplotlib.pyplot.colormaps()
Matplotlib提供了许多颜色Map表,其他的可以使用register_cmap()添加。这个函数记录了内置的颜色Map表,如果调用的话,还将返回所有注册的颜色Map表的列表。
返回的列表包括1.5.0中的viridismagmainfernoplasma

hk8txs48

hk8txs482#

这里有一些代码,绘制所有可用的颜色Map表链接到他们的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)

输出如下所示
口音

重音_r

蓝调

等等

c0vxltue

c0vxltue3#

下面是基于pr94的方法的代码,它将每个颜色Map表的id标在标题中,但没有为每个颜色Map表打开一个图。
我已经用它在一张图片中创建了所有166种颜色Map的概览(mpl版本3.4.2)。

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()
kh212irz

kh212irz4#

现在你可以在matplotlib文档的最新官方示例中看到所有可用的颜色及其种类。截至2023年9月,文档在这里:
https://matplotlib.org/stable/tutorials/colors/colormaps.html
下面是在IPython中显示颜色的示例用法,我还在cmap中使用了它。

from IPython.display import display
import matplotlib

display(matplotlib.colormaps["cool"])

n_sample = 3
display(matplotlib.colormaps["cool"].resampled(n_sample))

cmap = matplotlib.colors.ListedColormap(
    matplotlib.colormaps["cool"].resampled(n_sample)(range(n_sample))
)
for i, power in enumerate(power_output_result):
    color = cmap.colors[i]
#     plt.plot(..., color=color)
# plt.legend(loc='upper right')
# plt.show()
wlzqhblo

wlzqhblo5#

似乎你可以直接查看colormap示例,只要调用它的名字。例如,col_map = plt.get_cmap(cmap),你在终端中输入col_map(例如spyder),colormap将显示为一个plot。但是,我不确定是什么触发了这个外观,或者是否有任何必要的代码来指定这个选项?

1qczuiv0

1qczuiv06#

截至2021年(matplotlib 3.4),

Colormap对象的IPython表示

matplotlib.colors.Colormap对象现在有了IPython /IPython后端的图像表示。在最后一行返回颜色Map表的单元格将显示颜色Map表的图像。
所以现在你可以使用cmaps = plt.colormaps()来获取所有有效的颜色Map表名称。输出将是一个名称列表:

['Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn', 'BuGn_r', 'BuPu', 'BuPu_r', 'CMRmap', 'CMRmap_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 'Greens', 'Greens_r', 'Greys', 'Greys_r', 'OrRd', 'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG', 'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r', 'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy', 'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'Wistia', 'Wistia_r', 'YlGn', 'YlGnBu', 'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 'afmhot', 'afmhot_r', 'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 'brg', 'brg_r', 'bwr', 'bwr_r', 'cividis', 'cividis_r', 'cool', 'cool_r', 'coolwarm', 'coolwarm_r', 'copper', 'copper_r', 'cubehelix', 'cubehelix_r', 'flag', 'flag_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r', 'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 'gist_yarg', 'gist_yarg_r', 'gnuplot', 'gnuplot2', 'gnuplot2_r', 'gnuplot_r', 'gray', 'gray_r', 'hot', 'hot_r', 'hsv', 'hsv_r', 'inferno', 'inferno_r', 'jet', 'jet_r', 'magma', 'magma_r', 'nipy_spectral', 'nipy_spectral_r', 'ocean', 'ocean_r', 'pink', 'pink_r', 'plasma', 'plasma_r', 'prism', 'prism_r', 'rainbow', 'rainbow_r', 'seismic', 'seismic_r', 'spring', 'spring_r', 'summer', 'summer_r', 'tab10', 'tab10_r', 'tab20', 'tab20_r', 'tab20b', 'tab20b_r', 'tab20c', 'tab20c_r', 'terrain', 'terrain_r', 'turbo', 'turbo_r', 'twilight', 'twilight_r', 'twilight_shifted', 'twilight_shifted_r', 'viridis', 'viridis_r', 'winter', 'winter_r']

然后,plt.get_cmap(cmaps[0])将在IPython/IPyetrLab中呈现颜色Map表。x1c 0d1x

7vux5j2d

7vux5j2d7#

如上所述,plt.colormaps()将返回MPL中所有注册的色彩Map表的列表。(https://cmasher.readthedocs.io/user/usage.html#colormap-overviews)在CMasher包中。它需要一个色彩Map表列表,并创建一个包含所有色彩Map表的概览图。如果您想对特定的色彩Map表进行排序,它还提供了一系列选项。方面或按类型分组。
一个例子可以在这里看到(没有显示在这篇文章中的图像,因为它是相当大的):https://cmasher.readthedocs.io/user/cmap_overviews/mpl_cmaps.html

相关问题