python-对seaborn使用科学计数法

时间:2019-06-10 10:34:04

标签: python seaborn colorbar scientific-notation

我正在尝试使用python中的seaborn创建一个kde图,但是当设置颜色条值以科学计数法显示时,我发现没有区别。

请参阅-making colorbar with scientific notation in seaborn,以获取高度相关的主题。

有关Seaborn的kde类的文档,请参见-https://seaborn.pydata.org/generated/seaborn.kdeplot.html

是否有某些原因对kde类不起作用?还是我在格式化时犯了一个愚蠢的错误?

import numpy as np
import seaborn as sns
import matplotlib.ticker as tkr

a = np.random.normal(0,1,size=100)
b = np.random.normal(0,1,size=100)

fig, ax = plt.figure(), plt.subplot(111)
formatter = tkr.ScalarFormatter(useMathText=True)
formatter.set_scientific(True)
sns.kdeplot(a,b, n_levels=10, shade=True, cmap='Blues',
            cbar=True, cbar_kws={'format':formatter})

结果:

enter image description here

在这里,我希望色标像在问题描述中的第一个链接中那样显示索引符号。

非常感谢!

1 个答案:

答案 0 :(得分:1)

.set_scientific(True)适用于偏移标签。在这里,您没有任何偏移,因此似乎已被忽略。不幸的是,尚无规范的方式以科学计数法格式化滴答标签本身。

一种方法显示在Can I show decimal places and scientific notation on the axis of a matplotlib plot using Python 2.7?

在此处应用

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

a = np.random.normal(0,1,size=100)
b = np.random.normal(0,1,size=100)

fig, ax = plt.figure(), plt.subplot(111)

f = mticker.ScalarFormatter(useOffset=False, useMathText=True)
g = lambda x,pos : "${}$".format(f._formatSciNotation('%1.10e' % x))

sns.kdeplot(a,b, n_levels=10, shade=True, cmap='Blues',
            cbar=True, cbar_kws={'format': mticker.FuncFormatter(g)})

plt.show()

enter image description here