Reu*_*eut 1 python heatmap colorbar seaborn
我已经创建了热图,我想设置一个条件,如果单元格值高于 0.05,它将获得 cmap 中没有的特定颜色。现在我所做的是定义 vmin 和 vmax,但问题是 vmax 仍然得到 0.5 或 0.6 值,并且我不能确定条件是否真的保持不变。
green=sns.light_palette("seagreen",reverse=True,as_cmap=True)
sns.set(rc={'figure.figsize':(18.7,3.27)})
sns.heatmap(fhtmp,square=True,cmap=green,linewidths=.5,vmin=0, vmax=0.05)
Run Code Online (Sandbox Code Playgroud)
正如你在这里看到的,我真的不知道紫色的值是否等于 0.05 还是大于 0.05,我希望能够区分,因此如果值大于 0.05,单元格将具有不同的颜色,例如白色或灰色。
编辑:我设法使用一种面具,但绿色有一种色调,而面具有多种颜色。
sns.set(rc={'figure.figsize':(18.7,3.27)})
ax = sns.heatmap(fhtmp, cmap=green, center=0.8, square=True,
linewidth=.5, vmin=0, vmax=0.05)
ax = sns.heatmap(fhtmp, mask=fhtmp < 0.053, cmap='Blues', square=True, annot=False, vmin=0.053, vmax=0.53, cbar=False, ax=ax)
plt.show()
Run Code Online (Sandbox Code Playgroud)
您可以set_over()在颜色图上使用。例如green.set_over('lightgrey')。类似的函数有set_under()和set_bad()。
该extend关键字可以在颜色栏中显示这些额外的颜色(默认为小三角形)。
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
green = sns.light_palette("seagreen", reverse=True, as_cmap=True)
green.set_over('tomato')
sns.set(rc={'figure.figsize': (18.7, 3.27)})
sns.heatmap(np.random.uniform(0, 0.07, (1, 20)), square=True, linewidths=.5, annot=True, fmt='.3f',
cmap=green, vmin=0, vmax=0.05, cbar_kws={'extend': 'max'})
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2382 次 |
| 最近记录: |