python 使用sns绘制热力图如何根据数值条件填充指定颜色?而非使用系统自定义的色带。
有点类似于在excel中使用条件格式:
0<x≤35:填充绿色
35<x≤75:填充黄色
75<x≤115:填充橙色
实现最终效果图:
python 使用sns绘制热力图如何根据数值条件填充指定颜色?而非使用系统自定义的色带。
有点类似于在excel中使用条件格式:
0<x≤35:填充绿色
35<x≤75:填充黄色
75<x≤115:填充橙色
实现最终效果图:
用自带的flights数据库测试了一下,通过自定义cmap显示出来了结果。你可以用自己的数据集测试看看能否实现的你想得到的效果图。
import seaborn as sns
from matplotlib import pyplot as plt
#mypalette = ['#e8f0ff', '#51abff', '#12b74c', '#fffb16', '#ffc044', '#ff9400', '#ff6a00', '#c13300', '#b20c0c']
#plt.figure('hmap')
flights = sns.load_dataset("flights")
def c(x):
if 0<=x<=200:
return 'green'
elif 200<x<=400:
return 'yellow'
else:
return 'brown'
col=flights['passengers'].apply(lambda x:c(x)).tolist()
flights = flights.pivot("month", "year", "passengers")
#sns.palplot(sns.color_palette(mypalette))
ax = sns.heatmap(flights, cmap=col, center=350)
plt.show()