如何获取matplotlib配色方案的RGB值?

时间:2018-07-11 15:33:39

标签: python matplotlib

如何获取示例cdict值(https://matplotlib.org/2.0.1/examples/pylab_examples/custom_cmap.html):

$rules = [
   'the_other_field' => ['date_format:Y-m-d', 'after:today'],
];

if ($request->get('the_selection') != null) {
    array_push($rules['the_other_field'], 'required');
}

$this->validate($request, $rules);

对于matplotlib中的bwr配色方案(https://matplotlib.org/examples/color/colormaps_reference.html)?

1 个答案:

答案 0 :(得分:2)

要回答这个问题,可以通过以下方式获取“ bwr”颜色图的颜色:

import matplotlib.cm
print(matplotlib.cm.datad["bwr"])

可打印

((0.0, 0.0, 1.0), (1.0, 1.0, 1.0), (1.0, 0.0, 0.0))

这就是["blue", "white", "red"]

这对于实际应用可能不太有用。 要创建中间有更大范围白色的色图,最好从颜色列表(可能还有它们各自的值)中创建色图。

为此,可以使用LinearSegmentedColormap.from_list方法。

from matplotlib.colors import LinearSegmentedColormap

colors = [(0, "blue"), (0.4, "white"), (0.6, "white"), (1, "red")]
cmap = LinearSegmentedColormap.from_list("bwwr", colors)

数字介于0和1之间,需要升序并表示该特定颜色的“位置”。上面的代码将创建一个颜色图,从蓝色到白色的渐变介于0和0.4之间,然后所有白色介于0.4和0.6之间,然后从白色到红色的渐变介于0.6和1之间。

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

colors = [(0, "blue"), (0.4, "white"), (0.6, "white"), (1, "red")]
cmap = LinearSegmentedColormap.from_list("bwwr", colors)

a = np.arange(0,100).reshape(10,10)

fig, (ax,ax2) = plt.subplots(ncols=2, figsize=(7,3))
im = ax.imshow(a, cmap="bwr")
fig.colorbar(im, ax=ax)
im2 = ax2.imshow(a, cmap=cmap)
fig.colorbar(im2, ax=ax2)

ax.set_title("bwr")
ax2.set_title("bwwr")
plt.show()

enter image description here