Хорошо, я попробовал ваши версии, но, к сожалению, я не смог заставить их работать, так как были некоторые вещи, связанные с масштабированием и поиском в PDF, которые сильно смутили меня (и ваши предложения по коду).Но, протестировав их, я снова многому научился на python, спасибо!
Мне наконец удалось найти решение, которое не очень точное, но удовлетворяет мои потребности.Вот как я это сделал.
В моей версии один километр делится на подходящую целую константу с именем STEP_PART.Чем больше значение STEP_PART, тем точнее значения оси (и если оно слишком большое, ось становится грязной для чтения).Например, если STEP_PART равен 5, точность равна 1 км / 5 = 200 м, а метки ставятся на каждые 200 м.
STEP_PART = 5 # In the start of the program.
height = 6.42 # These are actually given elsewhere,
width = 4.37 # but just as example...
vHeight = range(0, int(STEP_PART*height), 1) # Make tick vectors, now in format
# 0, 1, 2... instead of 0, 0.2...
vWidth = range(0, int(STEP_PART*width), 1) # Should be divided by STEP_PART
# later to get right values.
Чтобы избежать создания слишком большого количества меток оси (0, 1, 2... достаточно, 0, 0,2, 0,4 ... это слишком много), мы заменяем нецелые значения км строкой "".Одновременно мы делим целочисленные значения км на STEP_PART, чтобы получить правильные значения.
for j in range(len(vHeight)):
if (j % STEP_PART != 0):
vHeight[j] = ""
else:
vHeight[j] = int(vHeight[j]/STEP_PART)
for i in range(len(vWidth)):
if (i % STEP_PART != 0):
vWidth[i] = ""
else:
vWidth[i] = int(vWidth[i]/STEP_PART)
Позже, после создания графика и осей, таким образом ставятся галочки (например, ось x).Здесь x - фактическая ширина изображения, полученная с помощью команды shape () (я не совсем понимаю, как ... в коде, который я модифицирую, довольно много масштабирования и прочего).
xt = np.linspace(0,x-1,len(vWidth)+1) # For locating those ticks on the same distances.
locs, labels = mpl.xticks(xt, vWidth, fontsize=9)
Повторите для оси y.Результатом является график, где отмечены отметки каждые 200 м, но метки данных на целочисленных значениях км.Во всяком случае, точность этих осей составляет 200 м, это не точно, но мне этого было достаточно.Сценарий будет еще лучше, если я узнаю, как увеличить размер целых тиков ...