修改colorbar中的刻度编号

时间:2015-12-25 15:48:00

标签: python matplotlib plot colorbar

您好我试图更改彩条上的编号我的代码在彩条上给了我一个意想不到的数字(+1.552,数字是正确的我只是不明白格式)。我的图表如下:

enter image description here

我想将颜色条上的刻度格式设置为1.5,1.52,1.54等。 我使用的代码如下:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rcParams['text.usetex'] = True
matplotlib.rcParams['text.latex.unicode'] = True

with open("psi_newdata.dat") as f:
    data = f.read()

data = data.split('\n')
cm = plt.cm.get_cmap('RdYlBu')
x = [float(row.split('\t')[12]) for row in data]
y = [float(row.split('\t')[14]) for row in data]
z = [float(row.split('\t')[8])/1000.0 for row in data]

cm = plt.cm.get_cmap('YlGnBu')
fig, ax = plt.subplots()
ax.set_yticks([0.1224,0.1172], minor=True)
ax.yaxis.grid(True, which='minor')

sc = ax.scatter(x, y, c=z,cmap=cm)
cbar = plt.colorbar(sc)
plt.xlabel(r'$\displaystyle M_{\tilde{\nu}_R}$\ [GeV]')
plt.ylabel(r'$\displaystyle\Omega h^2$')
cbar.set_label(r"$\displaystyle M_{Z^{'}}$\ [TeV]")
plt.show()

1 个答案:

答案 0 :(得分:4)

您在彩条上看到的格式是简写符号。如果您希望看到没有+1.552偏移量的经典格式,只需在调用colorbar时指定所需的格式:

import numpy as np
import matplotlib.pyplot as plt

# attempt to duplicate your data
x = np.arange(10)
y = x
z = 1.552 + np.linspace(0, 0.0030,10)

plt.scatter(x,y,c=z)
cbar = plt.colorbar(format="%.4f")

colorbar方法还允许您指定您想要的确切位置:

cbar = plt.colorbar(ticks=[1.5523, 1.5547], format="%.4f")

请注意,您应该同时指定格式和刻度,否则指定的刻度仍然会使用颜色条顶部的偏移量。

下图说明了这一点: example of preventing the offset from appearing on a colorbar