Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 修改颜色栏中的记号编号_Python_Matplotlib_Plot_Colorbar - Fatal编程技术网

Python 修改颜色栏中的记号编号

Python 修改颜色栏中的记号编号,python,matplotlib,plot,colorbar,Python,Matplotlib,Plot,Colorbar,嗨,我正在尝试更改colorbar上的编号我的代码在colorbar上给了我一个意外的数字(+1.552,数字是正确的,我只是不理解格式)。我的图表如下: import numpy as np import matplotlib.pyplot as plt import matplotlib matplotlib.rcParams['text.usetex'] = True matplotlib.rcParams['text.latex.unicode'] = True with open("

嗨,我正在尝试更改colorbar上的编号我的代码在colorbar上给了我一个意外的数字(+1.552,数字是正确的,我只是不理解格式)。我的图表如下:

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

您在颜色栏上看到的格式是一种速记符号。如果您想查看没有偏移量的经典格式,只需在调用
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")
请注意,您应该同时指定格式和刻度,否则指定的刻度仍将使用颜色栏顶部的偏移量

下图说明了这一点:

您在颜色栏上看到的格式是一种速记符号。如果您想查看没有偏移量的经典格式,只需在调用
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")
请注意,您应该同时指定格式和刻度,否则指定的刻度仍将使用颜色栏顶部的偏移量

下图说明了这一点: