2015-11-25 4 views
1

Я рисую изображение с использованием matplotlib, ось X имеет пиксели на нем - от 1 до размера изображения по оси X, например [1,1000], что соответствует моему физическому диапазону значенийКак получить хорошие пользовательские тики в matplotlib

k1_range = [2.11, 6.33] 

Мне нужны ярлыки, которые будут отображаться вдоль оси X, а не пиксели, но моя фактическая физическая ценность. Если я буду использовать что-то вроде

numpy.linspace(k1_range[0], k1_range[1], 5) 

я получить некоторые «некрасивые» этикетки

array([ 2.11 , 3.165, 4.22 , 5.275, 6.33 ]) 

мне нужно, чтобы они были хорошо, как

array([ 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. ]) 

Matplotlib может генерировать такие приятные глазу тиков при построении кривой с автоматическими тиками, но я не вижу простого способа указать пользовательский диапазон для этого красивого тика-автогенератора.

Я должен был использовать этот код, чтобы сделать хорошие тики, это, кажется, работает, но это тратить время, чтобы написать прослушивают код, чтобы сделать что-то, что уже сделано в Matplotlib

k1_range=[2.11, 6.33] 

KTickCount = 5 
KTickStep = numpy.abs((k1_range[1]-k1_range[0]))/KTickCount 
Digits = numpy.floor(numpy.log10(KTickStep)+1)-1 
KTickStep = (KTickStep/10**Digits) 
if KTickStep < 2: 
    KTickStep = 1 
elif KTickStep < 2.5: 
    KTickStep = 2 
elif KTickStep < 5: 
    KTickStep = 2.5 
else: 
    KTickStep = 5 
KTickStep = KTickStep * 10**Digits 
Digits = numpy.floor(numpy.log10(numpy.max(k1_range))+1)-1 
KTicks = numpy.arange(numpy.ceil(k1_range[0]/KTickStep)*KTickStep, k1_range[1], KTickStep) 
print(KTicks) 

Выход:

[ 2.5 3. 3.5 4. 4.5 5. 5.5 6. ] 

Как получить хорошие (округлые до 1, 2, 2,5, 5) позиции пометки при печати с помощью matplotlib?

ответ

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