matplotlib中的科学记谱法colorbar

时间:2014-09-22 21:14:59

标签: python matplotlib scientific-notation colorbar

我正在尝试使用matplotlib将颜色条添加到我的图像中。当我试图强制用科学记数法书写刻度标签时,问题出现了。如何在颜色条的刻度中强制使用科学记数法(即1x10 ^ 0,2x10 ^ 0,...,1x10 ^ 2等)?

例如,让我们用它的颜色条创建和绘制图像:

import matplotlib as plot
import numpy as np

img = np.random.randn(300,300)
myplot = plt.imshow(img)
plt.colorbar(myplot)
plt.show()

当我这样做时,我得到以下图像:

image created with the previous code

但是,我希望看到科学记数法中的ticklabels ...是否有任何一行命令来执行此操作?否则,那里有任何提示吗?谢谢!

3 个答案:

答案 0 :(得分:34)

您可以使用colorbar's format parameter

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

img = np.random.randn(300,300)
myplot = plt.imshow(img)

def fmt(x, pos):
    a, b = '{:.2e}'.format(x).split('e')
    b = int(b)
    return r'${} \times 10^{{{}}}$'.format(a, b)

plt.colorbar(myplot, format=ticker.FuncFormatter(fmt))
plt.show()

enter image description here

答案 1 :(得分:23)

您可以按如下方式指定颜色栏刻度的格式:

pl.colorbar(myplot, format='%.0e')

答案 2 :(得分:0)

没有library(purrr) min5 <- function(x) { x - 5 } df <- list(a = c(2,3,5,6), b = c('a','b'), # non numeric to cause error c = c(9,10,11,21)) map(df,min5) # doesnt run #> Error in x - 5: non-numeric argument to binary operator map(df,safely(min5)) #> $a #> $a$result #> [1] -3 -2 0 1 #> #> $a$error #> NULL #> #> #> $b #> $b$result #> NULL #> #> $b$error #> <simpleError in x - 5: non-numeric argument to binary operator> #> #> #> $c #> $c$result #> [1] 4 5 6 16 #> #> $c$error #> NULL 格式的情况下,有一种更简单(但更难以自定义)的方式以ColorBar来获得科学符号。

创建您的%.0e

ColorBar

并调用格式化程序:

cbar = plt.colorbar()

这将使cbar.formatter.set_powerlimits((0, 0)) 使用科学计数法。请参见下面的示例图,以查看ColorBar的外观。

enter image description here