2014-12-19 2 views
3

У меня есть простая гистограмма matplotlib, и мне нужно разделить ярлыки на определенное число. Например, у меня есть 100 200 и 300, в то время как мне нужно иметь 1,2 и 3. Любое предложение?Как разделить ytics на определенное число в matplotlib?

Вот мой код:

import numpy 
import matplotlib 
# Turn off DISPLAY 
matplotlib.use('Agg') 
import pylab 

# Figure aspect ratio, font size, and quality 
matplotlib.pyplot.figure(figsize=(100,50),dpi=400) 
matplotlib.rcParams.update({'font.size': 150}) 

matplotlib.rcParams['xtick.major.pad']='68' 
matplotlib.rcParams['ytick.major.pad']='68' 


# Read data from file 
data=pylab.loadtxt("data.txt") 

# Plot a histogram 
n, bins, patches = pylab.hist(data, 50, normed=False, histtype='bar') 
#matplotlib.pyplot.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1) 

# Axis labels 
pylab.xlabel('# of Occurence') 
pylab.ylabel('Signal Probability') 

# Save in PDF file 
pylab.savefig("Output.pdf", dpi=400, bbox_inches='tight', pad_inches=1) 
+0

Не могли бы вы объяснить, в чем проблема? –

ответ

3

Похоже, что вы не хотите, чтобы изменить исходные данные, и что это просто вопрос форматирования. В этом случае вы можете использовать экземпляр formatter-function class, найденный в ticker module.

Функция форматирования - для использования с экземпляром класса formatter-function - принимает два аргумента: метку метки и позицию тика и возвращает отформатированный тик-метку. Ниже приведена одна из ваших целей:

def numfmt(x, pos): # your custom formatter function: divide by 100.0 
    s = '{}'.format(x/100.0) 
    return s 

import matplotlib.ticker as tkr  # has classes for tick-locating and -formatting 
yfmt = tkr.FuncFormatter(numfmt) # create your custom formatter function 

# your existing code can be inserted here 

pylab.gca().yaxis.set_major_formatter(yfmt) 

# final step 
pylab.savefig("Output.pdf", dpi=400, bbox_inches='tight', pad_inches=1) 
Смежные вопросы