我正在尝试使用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()
当我这样做的时候,我得到了下面的图像:
但是,我希望看到科学记数法中的刻度标签...有没有哪一行命令可以做到这一点?否则,有没有什么提示呢?谢谢!
发布于 2014-09-23 05:27:26
您可以使用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()
发布于 2014-09-23 05:28:18
您可以按如下方式指定颜色栏记号的格式:
pl.colorbar(myplot, format='%.0e')
发布于 2020-11-27 06:06:42
有一种更直接(但不太可定制)的方法可以在不使用%.0e
格式的ColorBar
中获取科学记数法。
创建您的ColorBar
cbar = plt.colorbar()
并调用格式化程序:
cbar.formatter.set_powerlimits((0, 0))
这将使ColorBar
使用科学记数法。请参见下图中的示例,了解ColorBar
的外观。
该函数的文档可以在here中找到。
https://stackoverflow.com/questions/25983218
复制相似问题