#!/usr/bin/env python3
import math
import numpy as np
import seaborn as sn
from matplotlib.colors import LogNorm
data = np.random.rand(20, 20)
log_norm = LogNorm(vmin=data.min().min(), vmax=data.max().max())
cbar_ticks = [math.pow(10, i) for i in range(math.floor(math.log10(data.min().min())), 1+math.ceil(math.log10(data.max().max())))]
sn.heatmap(
data,
norm=log_norm,
cbar_kws={"ticks": cbar_ticks}
)
4条答案
按热度按时间x8diyxa71#
如果您当前安装了seaborn,则调用
heatmap
中的norm=LogNorm()
现在可以工作了。(在评论中指出-谢谢。)将此添加到seaborn示例之一:您可以在
seaborn
Package 器中将colorbar参数作为关键字传递,但它们有时会与seaborn选项发生冲突:作为比较,这是没有seaborn改进的
matplotlib
热图-colorbar参数都被应用:如果您必须使用较旧的安装,并且
LogNorm
在seaborn中不工作,请参阅此答案的以前版本以获得解决方法。kb5ga3dv2#
简答:
gdrx4gfi3#
你可以使用matplotlib.colors.LogNorm规范化colorbar上的值。我还不得不手动设置seaborn中的标签,最后得到了以下代码:
rks48beu4#
回应cphlewis(我没有足够的声誉),我使用
cbar_kws
解决了这个问题;正如我在这里看到的:seaborn clustermap: set colorbar ticks .例如
cbar_kws={"ticks":[0,1,10,1e2,1e3,1e4,1e5]}
。祝你愉快。