Я рисую изображение с использованием 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?