Bow*_*Bow 13 python matplotlib colormap
我想在python中创建自己的自定义颜色映射,我查看了一些在线示例并找到了命令
from matplotlib import cm
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
cdict1 = {'red': ((0.0, 0.0, 0.0),
(0.5, 0.0, 0.1),
(1.0, 1.0, 1.0)),
'green': ((0.0, 0.0, 0.0),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 0.0, 1.0),
(0.5, 0.1, 0.0),
(1.0, 0.0, 0.0))
}
blue_red1 = LinearSegmentedColormap('BlueRed1', cdict1)
plt.imshow(big,interpolation='nearest', cmap=blue_red1, aspect='auto')
plt.colorbar()
plt.show()
Run Code Online (Sandbox Code Playgroud)
通过上面的命令,我得到一个颜色图(红色 - 黑色 - 蓝色),其中红色为最大,蓝色为最小.我想创建一个颜色贴图(黑色 - 白色 - 黑色).有人可以告诉我应该做什么或任何其他方法?
Joe*_*ton 18
对于它的价值,还有一种更简单的方法.
完整的形式LinearSegmentedColormap使您能够在同一个色彩映射中具有"硬"停止和渐变,因此它必然很复杂.但是,对于简单的情况,例如您描述的内容,有一个便利构造函数.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
cmap = LinearSegmentedColormap.from_list('mycmap', ['black', 'white', 'black'])
fig, ax = plt.subplots()
im = ax.imshow(np.random.random((10, 10)), cmap=cmap, interpolation='nearest')
fig.colorbar(im)
plt.show()
Run Code Online (Sandbox Code Playgroud)
您希望所有三个组件在0和1处均为0,并且所有三个组件在0.5时均为1.所以你有了:
cdict1 = {'red': ((0.0, 0.0, 0.0), # <- at 0.0, the red component is 0
(0.5, 1.0, 1.0), # <- at 0.5, the red component is 1
(1.0, 0.0, 0.0)), # <- at 1.0, the red component is 0
'green': ((0.0, 0.0, 0.0), # <- etc.
(0.5, 1.0, 1.0),
(1.0, 0.0, 0.0)),
'blue': ((0.0, 0.0, 0.0),
(0.5, 1.0, 1.0),
(1.0, 0.0, 0.0))
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9440 次 |
| 最近记录: |