您好我试图更改彩条上的编号我的代码在彩条上给了我一个意想不到的数字(+1.552,数字是正确的我只是不明白格式)。我的图表如下:
我想将颜色条上的刻度格式设置为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()
答案 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")
请注意,您应该同时指定格式和刻度,否则指定的刻度仍然会使用颜色条顶部的偏移量。