Однако я пишу сценарий Python, который должен в интерактивном режиме позволять пользователю выбирать и удалять данные из дальнейших вычислений, поскольку мои данные по оси Y находятся в диапазоне от e-9 до e-14 (один анализ содержит данные по одному порядку величины, но этот порядок величины может быть между e-9 и e-14), а мои данные по оси X находятся в диапазоне 10-100, различия в порядке величины вызывают y- ось, чтобы доминировать при расчете ближайшего расстояния. В результате, если у меня есть два данных, представленные *, и точка щелчка, представленная x:
Точка щелчка явно находится ближе к нижней точке отсчета, однако, поскольку ось Y доминирует при расчете ближайшей точки, выбирается более высокая точка отсчета.
Я пробовал масштабировать временные данные (ось X) до порядка величины необработанных данных (ось Y) и наоборот:
Код: Выделить всё
# this finds the closest datum to the click point
def find_closest_index(analysis, click_coords, mass):
y_magnitude = np.floor(np.log10(np.max(analysis.raw_data[mass])))
scale_factor = 10**abs(y_magnitude - 1)
scaled_data = analysis.raw_data[mass] * scale_factor
distances = np.sqrt(
(analysis.time_sec - click_coords[0])**2 +
(scaled_data - click_coords[1])**2
)
# find the closest index
closest_index = distances.argmin()
return closest_index
Установка для Scale_factor значения y_magnitude - 1 дает масштабированные данные по оси Y порядка 10–100, что должно быть правильно, однако поведение, описанное выше, сохраняется. Изменение -1 на -3 или +3 приводит к неправильному выбору максимального или минимального значения, и я не нашел промежуточного значения, которое изменило бы фундаментальное поведение, описанное выше.
Что я могу сделать, чтобы устранить эту проблему и убедиться, что нижняя точка отсчета выбрана правильно?
Подробнее здесь:
https://stackoverflow.com/questions/784 ... -magnitude