我正在尝试使用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()
当我这样做时,我得到以下图像:
但是,我希望看到科学记数法中的ticklabels ...是否有任何一行命令来执行此操作?否则,那里有任何提示吗?谢谢!
答案 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()
答案 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
的外观。