Как преобразовать координаты x y в координаты центра hexbin

Я знаю о пакете hexbin, но пока не хочу подводить итоги. Я не рисую свои графики в R, поэтому мне не нужны объекты hexbin или многое другое в этом пакете.

Я просто хочу преобразовать / округлить координаты каждой точки в координаты xy центра шестиугольника, содержащего точку. Другими словами, вместо функции hexbin, возвращающей объект hexbin, я хочу вернуть координаты x и y центров шестиугольника, которые соответствуют входным координатам.

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


person DWal    schedule 04.10.2017    source источник


Ответы (1)


Назначьте объекту свой шестнадцатеричный бин с желаемыми размерами бункера, а затем проверьте структуру. Центр масс задается @xcm и @ycm. См. ?hexbin.

Пример показан ниже.

library(hexbin)
mtcars_hexbin <- hexbin(mtcars$mpg ~ mtcars$hp, xbins = 5, IDs= TRUE)
str(mtcars_hexbin)

# The x, y of center of mass are given by:
mtcars_hexbin@xcm
mtcars_hexbin@ycm

Отредактировано для ответа на комментарий: Если IDs = TRUE, то выходной @cID дает номер ячейки, к которой принадлежат все исходные неагрегированные точки. @cell дает вам номер ячейки, связанный с координатами центра масс @xcm, @ycm. @count сообщает вам, сколько точек принадлежит ячейке.

mtcars_hexbin@cID
mtcars_hexbin@cell
mtcars_hexbin@count
person Djork    schedule 04.10.2017
comment
Я знаю это. Но, как я уже сказал, он уже обобщен (т.е. по одной строке на каждый шестиугольник). Я хочу определить правильный шестнадцатеричный бит для каждой отдельной точки в моем неагрегированном списке координат. - person DWal; 04.10.2017
comment
Если вы установите IDs=TRUE, @cID вернет целочисленный вектор длины n, где cID [i] - номер ячейки i-й исходной точки (x [i], y [i]). @cell дает вам номер ячейки, соответствующий центру масс x, y. Это должно дать вам информацию, необходимую для определения ячейки, к которой принадлежат исходные точки, и координаты x, y этой ячейки. - person Djork; 04.10.2017
comment
Я знал, что это должно быть прямо перед моим лицом. Это прекрасно работает. Спасибо! - person DWal; 05.10.2017
comment
Кстати, xcm и ycm на самом деле не являются геометрическими центрами шестиугольника, они являются взвешенным центром масс точек, входящих в шестиугольник. Вам нужно hcell2xy(), чтобы получить координаты центра. - person DWal; 06.10.2017