matplotlib Colorbar科学记数法,将e^改为10^

jw5wzhpr  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(121)

我在2D图中的颜色栏中使用科学计数法。我想写10^{-3}而不是e-3。我试图改变这一点(见下面的代码),但它不工作.

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

x = np.random.rand(100)
y = np.random.rand(100)
z = np.random.rand(100)*0.001

x=x.reshape((10,10))

y=y.reshape((10,10))

z=z.reshape((10,10))

fig, ax = plt.subplots(figsize=(8,6))

cs = ax.contourf(x,y,z, 10)

plt.xticks(fontsize=16,rotation=0)
plt.yticks(fontsize=16,rotation=0)

cbar = plt.colorbar(cs,)
cbar.set_label("test",fontsize = 22)

cbar.formatter.set_scientific(True)
cbar.formatter.set_powerlimits((0, 0))
cbar.ax.tick_params(labelsize=16)
cbar.ax.yaxis.get_offset_text().set_fontsize(22)

cbar.ax.xaxis.major.formatter._useMathText = True

cbar.update_ticks()  

plt.savefig("test.png")

字符串

wdebmtf2

wdebmtf21#

看起来你想要一个使用mathtext的ScalarFormatter。

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

x = np.tile(np.arange(10), 10).reshape((10,10))
y = np.repeat(np.arange(10),10).reshape((10,10))
z = np.sort(np.random.rand(100)*0.001).reshape((10,10))

fig, ax = plt.subplots(figsize=(8,6))
cs = ax.contourf(x,y,z, 10)

fmt = matplotlib.ticker.ScalarFormatter(useMathText=True)
fmt.set_powerlimits((0, 0))
cbar = plt.colorbar(cs,format=fmt)

plt.show()

字符串


的数据

mpbci0fu

mpbci0fu2#

@ImportanceOfBeingErnesto的答案很好,但你不必使用自己的格式化程序,因为ScalarFormatter是默认使用的。这种方法更简单,并给出相同的结果:

import numpy as np
import matplotlib.pyplot as plt

x = np.tile(np.arange(10), 10).reshape((10,10))
y = np.repeat(np.arange(10),10).reshape((10,10))
z = np.sort(np.random.rand(100)*1e-3).reshape((10,10))

fig, ax = plt.subplots(figsize=(8,6))
cs = ax.contourf(x,y,z, 10)

cbar = plt.colorbar(cs)
cbar.formatter.set_powerlimits((0, 0))
cbar.formatter.set_useMathText(True)

plt.show()

字符串
x1c 0d1x的数据

相关问题