我有3組值的陣列,我想顏色:定義每個設置值的色彩映射表以陣列
- 爲0和1(
np.ma.masked_array(array, array > 1.)
)我想要的梯度之間的值(cmap = cm.Greens
例如) - 爲等於2(
np.ma.masked_array(array, array != 2.)
)我想要的顏色是紅色 - 爲等於3(
np.ma.masked_array(array, array != 3.)
)我要值的值的顏色是灰色
我應該爲每組數值定義一個色彩圖,然後將它們全部合併爲一個色彩圖?如果是這樣,我該如何繼續?
本網站(http://scipy.github.io/old-wiki/pages/Cookbook/Matplotlib/Show_colormaps)我發現像ListedColormap
或LinearSegmentedColormap
這樣的選項可能會有幫助,但我真的不知道如何使用它來獲得我想要的。
編輯:我做了,它不工作,因爲我不知道如何使用ListedColormap
和LinearSegmentedColormap
得到我想要的東西
from random import random
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
from matplotlib import cm
from matplotlib.colors import ListedColormap
n=11
tab = np.array([[random() for i in range(n)] for j in range(n)])
tab[1,2] = 2.
tab[3,4] = 2.
tab[5,6] = 3.
tab[7,8] = 3.
values1 = np.ma.masked_array(tab, tab > 1.)
values2 = np.ma.masked_array(tab, tab != 2.)
values3 = np.ma.masked_array(tab, tab != 3.)
colors1 = cm.Greens
colors2 = ListedColormap(['red'], 'indexed')
colors3 = ListedColormap(['gray'], 'indexed')
colors = np.vstack((colors1, colors2, colors3))
mycmap = mcolors.LinearSegmentedColormap.from_list('my_colormap', colors)
print plt.imshow(tab, cmap = mycmap, interpolation="none")
你是正確的,你最好使用ListedColormap(如果值是離散的)或LinearSegmentedColormap(如果值是連續的)。只要沒有人知道你在執行這些任務時遇到了什麼問題,就無法幫助你。 – ImportanceOfBeingErnest
我編輯了我的問題,我想要做的似乎是離散值和連續值的混合。 –