matplotlib中的科学记数法colorbar

zvokhttg  于 2023-08-06  发布在  其他
关注(0)|答案(4)|浏览(188)

我正在尝试使用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()

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


的数据
不过,我想看看科学记数法的记号...是否有任何一个行命令可以做到这一点?否则,有什么线索吗?谢谢你,谢谢

webghufk

webghufk1#

您可以使用colorbarformat参数:

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()

字符串


的数据

llycmphe

llycmphe2#

可以按如下方式指定颜色条记号的格式:

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

字符串

ee7vknir

ee7vknir3#

有一种更直接(但可定制性较差)的方法可以在ColorBar中获得科学记数法,而无需%.0e
创建您的ColorBar

cbar = plt.colorbar()

字符串
并调用格式化程序:

cbar.formatter.set_powerlimits((0, 0))


这将使ColorBar使用科学记数法。请参阅下面的示例图,了解ColorBar的外观。


的数据
此函数的文档可以在here中找到。

sulc1iza

sulc1iza4#

看起来,在Joseph的答案中,cbar.formatter.set_powerlimits((0,0))本身还不能呈现像$10^3$这样的数学格式。
加上cbar.formatter.set_useMathText(True)得到大约10^3 $。

import matplotlib.pyplot as plt
import numpy as np

img = np.random.randn(300,300)*10**5
myplot = plt.imshow(img)
cbar = plt.colorbar(myplot)
cbar.formatter.set_powerlimits((0, 0))

# to get 10^3 instead of 1e3
cbar.formatter.set_useMathText(True)

plt.show()

字符串
这将生成x1c 0d1x
请参阅set_useMathText()的文档。

相关问题