python Matplotlib颜色条的格式

xpcnnkqh  于 2022-12-17  发布在  Python
关注(0)|答案(2)|浏览(167)

你好,
我似乎没有得到问题的解决方案。我有一个带颜色条的Matplotlib图表。颜色条的范围是0到50,000。我的颜色条空间有限,想将千位数的格式设置为10 k、20 k、30 k、40 k和50 k。我该怎么做?
我的颜色条代码如下所示:

cb = plt.colorbar(format ='%1.0f')

我应该在“格式”中放入什么来将千位数从50,000更改为50 k?
谢谢大家!

bvhaajcl

bvhaajcl1#

我对format选项不是很熟悉,所以我提出了一个不同的解决方案:

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])
ifsvaxew

ifsvaxew2#

如果您使用lambda函数作为colorbarformat选项,则可以实现这一点。然后,您可以根据需要设置ticklabel字符串的格式。要转换为您指定的“50k”格式,可以使用简单的lambda函数,将值除以1000,然后在格式字符串中添加“k”,例如:

lambda x, pos: "{:g}k".format(x / 1000)

在一个完整的最小示例中,如下所示:

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

相关问题