gpt4 book ai didi

python - 如何在 seaborn 热图标签中使用科学记数法?

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:16 25 4
gpt4 key购买 nike

我正在尝试在 python 中使用 seaborn 获取热图。不幸的是,即使数字非常大,它也没有使用科学记数法。我想知道是否有任何简单的方法可以转换为科学计数法或任何其他合理的格式。这是显示问题的一段代码:

import seaborn as sns 
import numpy as np
C_vals = np.logspace(3, 10, 8)
g_vals = np.logspace(-6, 2, 9)
score = np.random.rand(len(g_vals), len(C_vals))
sns.heatmap(score, xticklabels=C_vals, yticklabels=g_vals)

结果图如下

heatmap with bad format

最佳答案

热图允许根据 xticklabels/yticklabels 命令的输入创建其标签。然后将它们放在轴上,因此没有数字格式可以改变它们的外观。

一个选项是在将标签提供给热图之前格式化标签。为此,可以(误)使用 matplotlib ScalarFormatter,它允许从 float 自动生成 MathText 字符串。下面是一个例子:

import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import seaborn as sns
import numpy as np

C_vals = np.logspace(3, 10, 8)
g_vals = np.logspace(-6, 2, 9)
score = np.random.rand(len(g_vals),len(C_vals))

tick = ticker.ScalarFormatter(useOffset=False, useMathText=True)
tick.set_powerlimits((0,0))

tc = [u"${}$".format(tick.format_data(x)) for x in C_vals]
tg = [u"${}$".format(tick.format_data(x)) for x in g_vals]

sns.heatmap(score, xticklabels=tc, yticklabels=tg)

plt.show()

enter image description here

关于python - 如何在 seaborn 热图标签中使用科学记数法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730500/

25 4 0