簡體   English   中英

將最小值顯示為白色

[英]Displaying lowest values as white

我有以下 3x3 矩陣,我想要 plot:

import matplotlib.cm
import matplotlib.pyplot as plt
import numpy as np
import copy
cmap = copy.copy(cm.get_cmap("Blues"))
cmap.set_bad('white')
fig = plt.figure(figsize=(15, 10))
img = np.array([[-0.9, -0.5599234,  0.21042876],[-0.42735877, 0.61514954, -0.74305015],[0.61958201, -0.04358633, 0.78672511]])
im = plt.imshow(img, origin='upper', cmap=cmap)

結果如下所示:

在此處輸入圖像描述

可見,左上角的條目最小,應顯示為白色。 如何更改它以使最小的條目顯示為白色?

其次,有沒有辦法調整顏色圖,使其以較暗的值開始?

讓顏色圖以白色開始的一種方法是創建ListedColormap ,例如從white變為darkblue藍色。 要從最暗的顏色開始,只需反轉 ListedColormap 的ListedColormap列表。

可以反轉標准顏色圖,只需在其名稱末尾 附加_r即可。

創建從中檔到深藍色的顏色圖的一種方法是創建ListedColormap ,其中 rgb 值以十六進制形式給出。

這里有些例子:

import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
import numpy as np

img = np.array([[-0.9, -0.5599234, 0.21042876], [-0.42735877, 0.61514954, -0.74305015], [0.61958201, -0.04358633, 0.78672511]])

fig, axs = plt.subplots(ncols=3, figsize=(12, 5))

cmap0 = LinearSegmentedColormap.from_list('', ['white', 'darkblue'])
cmap1 = 'Blues_r'
cmap2 = LinearSegmentedColormap.from_list('', ['#aaddee', '#000077'])

for ax, cmap in zip(axs, [cmap0, cmap1, cmap2]):
    im = ax.imshow(img, origin='upper', cmap=cmap)
    plt.colorbar(im, ax=ax, orientation='horizontal', pad=0.05)
    ax.set_xticks([0, 1, 2])
    ax.set_yticks([0, 1, 2])
    ax.tick_params(labelbottom=False, labelleft=False, length=0)  # hide ticks, but use position for a grid
    ax.grid(True, color='white')

axs[0].set_title("Colormap from white to darkblue")
axs[1].set_title("Reversed blues colormap")
axs[2].set_title("Custom darker blues colormap")
plt.show()

以白色或深色開頭的顏色圖

同樣令人感興趣的可能是 Seaborn 的調色板函數,它提供了創建顏色圖的其他方法(這些函數需要參數as_cmap=True才能返回顏色圖)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM