我想知道是否有一个函数调用可以给我一个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中运行此功能不会返回新的色彩映射,例如viridis
,magma
等。在新的参考页面上,代码实际上对名称进行了硬编码(参见here),但我想知道是否仍然可以进行类似的查询?
答案 0 :(得分:10)
plt.colormaps()
返回所有已注册色彩映射的列表。来自文档:
matplotlib.pyplot.colormaps()
Matplotlib提供了许多色彩映射,其他可以使用register_cmap()添加。此函数记录内置的色彩映射,如果被调用,还将返回所有已注册色彩映射的列表。
此返回的列表包括viridis
magma
,inferno
,plasma
和1.5.0
答案 1 :(得分:1)
以下是基于 pr94 方法的代码,该方法在标题中绘制每个带有 id 的颜色图,但不会为每个单独的颜色图打开图形。
我已经使用它在所有 166 个颜色图(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()
答案 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)
输出看起来像这样
口音
Accent_r
蓝调
等...
答案 3 :(得分:0)
看来只要调用它的名字就可以直接查看colormap实例了。例如,col_map = plt.get_cmap(cmap),并且您在终端(例如 spyder)中键入 col_map,颜色图将显示为绘图。但是,我不确定是什么触发了这种外观,或者是否有任何必要的代码来指定此选项?