为Seaborn热图创建自定义cmap

时间:2019-03-01 12:45:31

标签: python-3.x matplotlib seaborn

这是一个很棒的热图:http://graphics.wsj.com/infectious-diseases-and-vaccines/ 我正在尝试在Seaborn中做类似的事情,想知道是否可以采用自定义调色板,例如将其变成cmap,然后使用center来使其倾斜?

import seaborn as sns
from matplotlib import pyplot as plt

mypalette = ['#e8f0ff', '#51abff', '#12b74c', '#fffb16', '#ffc044', '#ff9400', '#ff6a00', '#c13300', '#b20c0c']
sns.palplot(sns.color_palette(mypalette))

我能得到的最接近的东西是

plt.figure('hmap')
flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")
ax = sns.heatmap(flights, cmap = mypalette, center = 350)

当然,这个调色板没有渐变。对数据集表示歉意,我意识到它没有偏斜,但是似乎很容易使用。

1 个答案:

答案 0 :(得分:0)

使用Matplotlib中列出的颜色或线性分段的颜色图,例如。就像这个问题(Discrete legend in seaborn heatmap plot):

myColors = ((0.8, 0.0, 0.0, 1.0), (0.0, 0.8, 0.0, 1.0), (0.0, 0.0, 0.8, 1.0))

cmap = LinearSegmentedColormap.from_list('Custom', myColors, len(myColors))

您可以使用RGB或十六进制格式指定颜色。但是,seaborn提供了许多预定义的调色板,请参见https://seaborn.pydata.org/tutorial/color_palettes.html