擅长:python、mysql、java
<p>可以使用<a href="https://matplotlib.org/api/_as_gen/matplotlib.colors.LogNorm.html" rel="noreferrer">matplotlib.colors.LogNorm</a>规范化colorbar上的值。
我还不得不在seaborn中手动设置标签,最后得到了以下代码:</p>
<pre><code>#!/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}
)
</code></pre>
<p><img src="https://i.stack.imgur.com/vuGUa.png" alt="heatmap rand"/></p>