带有对数刻度颜色条的 Seaborn 热图

新手上路,请多包涵

有没有办法设置颜色条比例以登录 seaborn 热图?

我正在使用 pandas 的数据透视表输出作为调用的输入

 sns.heatmap(df_pivot_mirror,annot=False,xticklabels=256,yticklabels=128,cmap=plt.cm.YlOrRd_r)

谢谢你。

原文由 fulatoro 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 843
1 个回答

如果您当前安装了 seaborn, norm=LogNorm() 在对 heatmap 的调用中现在可以使用。 (在评论中指出——谢谢。)将此添加到其中一个 seaborn 示例中:

 import numpy as np
import seaborn as sns; sns.set_theme(style='white')
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm, Normalize
from matplotlib.ticker import MaxNLocator

flights = sns.load_dataset("flights")
flights = flights.pivot("month", "year", "passengers")

f3, ax5 = plt.subplots(1,1)
sns.heatmap(flights, square=True, norm=LogNorm())

带有对数范数颜色条的热图,四个刻度标签

您可以在 seaborn 包装器中将颜色条参数作为关键字传递,但它们有时会与 seaborn 选项发生冲突:

 sns.heatmap(flights, square=True, norm=LogNorm(), cbar_kws={'ticks':MaxNLocator(2), 'format':'%.e'})

带有对数范数颜色条的热图,数字格式不一致的四个刻度标签

为了进行比较,这是 matplotlib 没有 seaborn 改进的热图——颜色条参数都已应用:

 f5, ax6 = plt.subplots(1,1)
im6 = plt.imshow(flights, norm=LogNorm())
cbar6 = ax.figure.colorbar(im6, ax=ax6, ticks=MaxNLocator(2), format='%.e')

具有对数范数颜色条、两个刻度标签、科学数字格式的热图

如果您必须使用较旧的安装并且 LogNorm 在 seaborn 中不起作用,请参阅此答案的先前版本以获取解决方法。

原文由 cphlewis 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题