Seaborn 热图颜色条标签百分比

新手上路,请多包涵

鉴于此热图:

 import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()
uniform_data = np.random.rand(10, 12)
ax = sns.heatmap(uniform_data)

我将如何着手使颜色条值以百分比格式显示?另外,如果我只想在颜色条上显示第一个和最后一个值怎么办?

提前致谢!

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

阅读 569
2 个回答

迭代@mwaskom 的解决方案,而不是自己创建颜色条:

 import numpy as np
import seaborn as sns
data = np.random.rand(8, 12)
ax = sns.heatmap(data, vmin=0, vmax=1)
cbar = ax.collections[0].colorbar
cbar.set_ticks([0, .2, .75, 1])
cbar.set_ticklabels(['low', '20%', '75%', '100%'])

自定义 seaborn 热图颜色条标签

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

好吧,我遇到了类似的问题,想出了如何 正确设置格式化程序的 方法。你的例子会变成这样:

 import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set()

uniform_data = np.random.rand(10, 12)
uniform_data = 100 * uniform_data

sns.heatmap(uniform_data,
            cbar_kws={'format': '%.0f%%'})

因此,您要做的是传递一个 旧式字符串格式化程序 以将百分比添加到颜色栏标签。不完全是我所说的不言而喻,但有效……

要仅显示第一个和最后一个,则添加 vmaxvmin 和一个额外参数 cbar_kws

 sns.heatmap(uniform_data,
            cbar_kws={'format': '%.0f%%', 'ticks': [0, 100]},
            vmax=100,
            vmin=0)

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进