Конвертировать единицы из NPC в родной с помощью сетки в R - PullRequest
6 голосов
/ 13 августа 2011

Суть моей проблемы:

Я пытаюсь преобразовать единицы измерения npc в собственные единицы, используя функции convertUnit, convertX и convertY пакета сетки. (npc = нормализованные родительские координаты, возможно, известные как единицы ndc, нормализованные координаты устройства для некоторых в базовой графике R. Я пытаюсь добраться до собственных единиц, тех, в которых отображается график, поэтому в терминах единиц xlim и ylim .) Однако, когда я пытаюсь сделать это так:

> xyplot(1:10~1:10)
> convertX(unit(.9, "npc"), "native")
[1] 484.2native

когда я ожидаю число, близкое к 9, в качестве собственной координаты x. Похоже, что convertX возвращает единицы измерения в координатах / пикселях устройства.

Рассуждение: Я пытаюсь использовать устройство типа базового локатора для возврата координат NPC, и из этих координат NPC преобразовать в исходные координаты, в которых был построен график. В то время как я могу использовать локатор базовой графики или grid.locator, я пытаюсь расширить функциональность этого нового, не блокирующего локатора для графики сетки / решетки путем преобразования из npc обратно в native. convertUnit и convertY тоже не работают.

Вопрос Возможно ли преобразование сетки из npc обратно в собственные координаты активного окна черчения? Почему convertX возвращает пиксели, а не собственные координаты?

Большое спасибо заранее.

Отредактировано для тегов и неаккуратной ошибки, исключая ранее xyplot. Приношу свои извинения, но это относится к xyplot.

Ответы [ 2 ]

1 голос
/ 13 августа 2011

native «native» ’Местоположения и размеры относятся к« xscale »и« yscale »области просмотра. Преобразования происходят в текущем окне просмотра.

> plot(1:10)
> convertX(unit(.9,"npc"),"native")
[1] 453.6native
> pushViewport(viewport())
> convertX(unit(.9,"npc"),"native")
[1] 0.9native
> convertX(unit(.1,"npc"),"picas")
[1] 4.21575picas #making window smaller
> convertX(unit(.1,"npc"),"picas")
[1] 1.9798375984252picas #making window larger
> convertX(unit(.1,"npc"),"picas")
[1] 5.25783218503937picas

Так что сначала вам нужен видовой экран, чтобы получить разумные значения.

0 голосов
/ 09 июля 2015

По-видимому, после нажатия окна просмотра он забыл о заданной координате нижележащего графика, и новые координаты кажутся эквивалентными координатам NPC.

Пока вы не построите график в новом окне просмотра, после чего вы вернетесь на круги своя:

xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native
> pushViewport(viewport())
> convertX(unit(.9, "npc"), "native")
[1] 0.9native
> xyplot(1:10 ~ 10:1)
> convertX(unit(.9, "npc"), "native")
[1] 605.7native

Возможно ли получить координаты, соответствующие тем, в которых x и y фактически нанесены?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...