2015-12-25 5 views
0

Привет Я пытаюсь изменить нумерацию на colorbar, мой код дает мне неожиданный номер на цветной панели (+1.552, цифры верны, я просто не понимаю формат). Мой график выглядит следующим образом:изменение нумерации тиков в colorbar

enter image description here

Я хочу, чтобы отформатировать эти тики на цветной полосе в 1,5, 1.52,1.54 и т.д. Код, Im использование выглядит следующим образом:

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

ответ

3

формат, который вы видите на цветной панели, представляет собой сокращенную нотацию. Если вы хотите, чтобы увидеть классический формат без +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

Смежные вопросы