Разметка линий на сюжете - PullRequest
       16

Разметка линий на сюжете

12 голосов
/ 16 ноября 2010

Я строю две линии, используя

plot(x, y, type = "l", color = "red")

и

points(x2, y2, type = "l", color = "blue")

Я хочу добавить метку рядом с каждой строкой (вместо легенды).Я почти уверен, что это возможно, используя пакет в http://directlabels.r -forge.r-project.org / .

Однако я не нахожу простой способ сделать это.

Ответы [ 4 ]

17 голосов
/ 16 ноября 2010

Вы можете использовать locator() в text() по методу точки и щелчка.

y <- rnorm(100, 10)
y2 <- rnorm(100, 20)
x <- 1:100

plot(x, y, type = "n", ylim = c(0, 40), xlim = c(0, 120))
lines(x, y)
lines(x, y2, col = "red")
text(locator(), labels = c("red line", "black line)"))

alt text

12 голосов
/ 17 ноября 2010

Вместо использования locator () вы также можете просто сделать координаты метки функцией ваших данных. Например, копилка на демоверсии Романа:

text(x=rep(max(x)+3, 2), y=c(mean(y), mean(y2)), pos=4, labels=c('black line', 'red line'))
3 голосов
/ 08 февраля 2013

locator() - это интерактивный метод получения координат путем нажатия на существующий график.

Ниже приведены инструкции по использованию locator() для нахождения правильных координат для метки на графике.

Шаг 1: Построить график:

plot(1:100)

Шаг 2: Введите в консоли следующее:

coords <- locator()

Шаг 3: Нажмите один раз на график, затем нажмите Stop .. Stop Locator в верхнем левом углу графика (это вернет управление обратно на консоль R).

Шаг 4: Найдите возвращаемые координаты:

coords
$x
[1] 30.26407
$y
[1] 81.66773

Шаг 5: Теперь вы можете добавить метку к существующему графику, используя следующие координаты:

text(x=30.26407, y=81.66773,label="This label appears where I clicked")

или

text(x=coords$x, y=coords$y,label="This label appears where I clicked")

Вот результат:

enter image description here

Вы заметите, что этикетка появляется в центре, где вы щелкнули.Лучше, если метка появится с первым символом, на котором вы щелкнули.Чтобы найти правильный параметр, см. Справку для text и добавьте параметр pos=4:

text(x=30,y=80,pos=4,label = "hello")

Примечания:

  • Метка отображается в том же x,координаты у в виде точек на графике.Так, x = 100, y = 0 появится в в правом нижнем углу , а x = 0, y = 100 появится в в верхнем правом углу.left .
  • Можно также использовать legend() для нанесения метки (это обводит рамку вокруг метки, которая часто выглядит лучше).
  • См. Как изменить семейство шрифтовв легенде в R-сюжете? о том, как изменить шрифт в легенде и как автоматически разместить легенду в правом верхнем углу графика.
  • Я бы порекомендовал ознакомиться сggplot2 вместо графика, поскольку ggplot2 является золотым стандартом для создания графиков.
3 голосов
/ 25 февраля 2011

Чтобы использовать directlabels, вы должны структурировать свои данные в data.frame, а затем использовать высокоуровневую систему построения графиков, например ggplot2, или в приведенном ниже примере решетку:

y <- rnorm(100, 10)
y2 <- rnorm(100, 20)
x <- 1:100
treatment <- rep(c("one group","another"),each=length(x))
df <- data.frame(x=c(x,x),y=c(y,y2),treatment)
library(lattice)
p <- xyplot(y~x,df,groups=treatment,type="l")
if(!require(directlabels)){
  install.packages("directlabels")
  library(directlabels)
}
print(direct.label(p))
print(direct.label(update(p,xlim=c(0,120)),last.points))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...