自定义色彩图

时间:2018-10-03 11:29:51

标签: python matplotlib seaborn colormap

我想绘制一个具有与此相似的自定义颜色图的热图,尽管不完全一样。

enter image description here

我想要一个像这样的色彩图。在[-0.6,0.6]区间内,颜色为浅灰色。高于0.6时,红色增强。低于-0.6时,另一种颜色(例如蓝色)会增强。

如何使用python和matplotlib创建这样的颜色图?

到目前为止我所拥有的: 在ActiveRecord::StaleObjectError中,有一个命令seaborn会产生一个从蓝灰色到红色的色彩图。但是与[-0.6,0.6]之间仍然没有差距。

enter image description here

2 个答案:

答案 0 :(得分:2)

色图在0..1范围内标准化。因此,如果您的数据限制为-1..1,则将-0.6标准化为0.2,将+0.6标准化为0.8。

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

norm = matplotlib.colors.Normalize(-1,1)
colors = [[norm(-1.0), "darkblue"],
          [norm(-0.6), "lightgrey"],
          [norm( 0.6), "lightgrey"],
          [norm( 1.0), "red"]]

cmap = matplotlib.colors.LinearSegmentedColormap.from_list("", colors)


fig, ax=plt.subplots()
x = np.arange(10)
y = np.linspace(-1,1,10)
sc = ax.scatter(x,y, c=y, norm=norm, cmap=cmap)
fig.colorbar(sc, orientation="horizontal")
plt.show()

enter image description here

答案 1 :(得分:-1)

您可以从Tkinter导入颜色选择器:

from tkinter.colorchooser import askcolor

(triple, hexstring) = askcolor()

玩这个:)