TapTool «щелкает» несколько глифов одновременно (множество глифов близко друг к другу) - PullRequest
0 голосов
/ 02 апреля 2019

Я успешно создал гистограмму.Тем не менее, поскольку существует много глифов прямо над и под друг другом, всякий раз, когда в TapTool отправляется «щелчок», у нескольких глифов появляется триггер инструмента касания, поэтому на новых вкладках открываются несколько изображений, а не один «самый близкий кнажмите «глиф».

Как вы можете видеть на скриншотах, в представлении по умолчанию есть так много глифов, которые перекрываются, что, если я просто нажму кнопку мыши вниз, я, вероятно, нажму несколько глифов, и этоВот почему инструмент «Нажми» запускается несколько раз (один раз за каждое попадание глифа).При увеличении очевидно, что вместо гистограммы она представляет собой точечную диаграмму, скомпонованную в виде гистограммы, где каждый глиф представляет отдельное изображение.

Как заставить только «ближайший»глиф (или только взять первый глиф из списка глифов, пораженных таптулом), чтобы вызвать его таптул?

zoomed_out

zoomed_in

В Интернете не так много документации, как это сделать.

imgs = ['http://1...', 'http://2...', 'http://3...']
url = "@imgs"
click_tool = TapTool(callback=OpenURL(url=url))
p.add_tools(click_tool)

1 Ответ

0 голосов
/ 03 апреля 2019

Под курсором мыши слишком много глифов, сжатых на пиксель, поэтому они все будут реагировать на ваш щелчок мышью. Хорошим решением будет иметь функцию обратного вызова, присоединенную к y-диапазону вашего графика, которая будет перерисовывать диаграмму с меньшим количеством глифов. Поэтому при увеличении масштаба внешние глифы исчезнут с графика и будут добавлены новые, ранее невидимые. При некотором уровне масштабирования вам больше не нужно будет фильтровать глифы, и все они будут соответствовать. Я имею в виду что-то вроде этого:

plot.y_range.callback = CustomJS(args=dict(source=source), code=code)

Холст графика имеет фиксированную высоту в пикселях, поэтому при обратном вызове вам нужно будет добавить не более того количества глифов на вашем графике (число глифов = высота пикселя холста). Это означает, что одна горизонтальная полоса на высоту пикселя. Затем одним щелчком мыши следует выбрать только один глиф.

...