我正在尝试使用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})
结果:
在这里,我希望色标像在问题描述中的第一个链接中那样显示索引符号。
非常感谢!
答案 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()