import numpy as np
import matplotlib.pyplot as plt
f = plt.figure()
ax = f.add_subplot(1, 1, 1)
x, y = np.mgrid[-5:5:100j, -5:5:100j]
z = np.cos(np.sqrt(x**2 * y**2)) * 50e03
c = ax.contourf(x, y, z)
cb = plt.colorbar(c)
# get current tick values
tick_values = cb.get_ticks()
# set new tick labels
cb.set_ticklabels([str(int(t / 1000)) + "K" for t in tick_values])
import numpy as np
import matplotlib.pyplot as plt
# some fake data for this example
data = np.arange(0, 50000, 2000).reshape(5, 5)
# create the figure and axes
fig, ax = plt.subplots()
# plot the data
p = ax.pcolormesh(data, vmin=0, vmax=50000)
# define our function to be used to format the tick labels
kfmt = lambda x, pos: "{:g}k".format(x / 1000)
cb = fig.colorbar(p, ax=ax, format=kfmt)
plt.show()
2条答案
按热度按时间bvhaajcl1#
我对
format
选项不是很熟悉,所以我提出了一个不同的解决方案:ifsvaxew2#
如果您使用lambda函数作为
colorbar
的format
选项,则可以实现这一点。然后,您可以根据需要设置ticklabel字符串的格式。要转换为您指定的“50k”格式,可以使用简单的lambda函数,将值除以1000,然后在格式字符串中添加“k”,例如:在一个完整的最小示例中,如下所示: