2012-05-06 5 views
4

Я пытаюсь понять, как использовать разные координатные системы для координат x и y в функциях text() или grid.text() (или любых других подобных функций в R).Смешивание систем координат X и Y

В приведенном ниже примере я хотел бы установить координаты Y функции text() на 10% от нижней части экрана вместо использования шкалы Y. Я могу сделать это с grid.text() с y = 0,1, но я не знаю, как установить X-позиции grid.text() в шкалу X графика. В принципе, я хотел бы объединить возможности функций text() и grid.text().

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

library(grid) 

test= data.frame(
    x = c(1,2,3), 
    y = c(12,10,3), 
    n = c(75,76,73) 
) 

par(mar = c(13,5,2,3)) 
plot(test$y ~ test$x,type="b") 

text(x=test$x, y=-2, label=test$n, xpd=T) 

enter image description here

ответ

3

Переписан:

Использование grconvertY() для преобразования по умолчанию 7-дюймовый дисплей размеры которого пользователь координаты:

opar <- par(mar = c(13,5,2,3)) 
plot(test$y ~ test$x,type="b") 
text(x=test$x, y=grconvertY(0.1*7 , "in", "user") , label=test$n, xpd=T) 
par(opar) 

дисплей по умолчанию составляет 7 квадратных дюймов (по крайней мере, на моей машине), но вам нужно указать координаты пользователя для функции text. grconvertY и grconvertX могут выполнить это преобразование, хотя вы удовлетворены координатами пользователя для измерения X, поэтому не следует использовать grconvertX.

enter image description here

+0

Спасибо! Думаю, добавив grid.text, я действительно смутил вопрос. Мне нужно использовать координаты X из графика. В вашем коде x равен 0,5, однако мне нужно, чтобы x было одним из значений x из набора данных, а y должно равняться 0,1. Я понятия не имею, можно ли это сделать. спасибо –

+0

Думаю, я понимаю, чего вы хотите. Вам нужно перейти от координат устройства к пользовательским координатам, чтобы дать «текст». –

+0

Спасибо! Я исхожу из фона SAS, где координаты x и y могут использовать разные системы координат (устройство и пользователи). Я попытался сделать это с помощью grid.text, используя координаты пользователя и координаты устройства, но не смог заставить его работать. В идеале я хотел бы использовать разные системы координат (устройства) в функции TEXT, но GRID.TEXT был бы хорош. –