Линии ярлыков в сюжете
Я рисую две строки, используя
plot(x, y, type = "l", color = "red")
и
points(x2, y2, type = "l", color = "blue")
Я хочу добавить метку рядом с каждой строкой (вместо легенды).
Я уверен, что можно использовать пакет в http://directlabels.r-forge.r-project.org/.
Тем не менее, я не нахожу простой способ сделать это.
Ответы
Ответ 1
Вы можете использовать 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]()
Ответ 2
Вместо использования locator() вы также можете просто сделать координаты меток функцией ваших данных. Например, копирование на римской демо:
text(x=rep(max(x)+3, 2), y=c(mean(y), mean(y2)), pos=4, labels=c('black line', 'red line'))
Ответ 3
Чтобы использовать 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))
Ответ 4
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, y, что и точки на графике. Итак, x = 100, y = 0 появится в в нижнем правом, а x = 0, y = 100 появится на верхний левый.
- Можно также использовать
legend()
для построения метки (это рисует прямоугольник вокруг метки, который часто выглядит лучше).
- См. Как изменить семейство шрифтов в легенде на R-графике? о том, как изменить шрифт в легенде и как автоматически разместить легенду в верхнем правом углу графика.
- Я бы рекомендовал ознакомиться с
ggplot2
вместо графика, так как ggplot2
является золотым стандартом для создания графиков.
Ответ 5
Посмотрите на функцию labcurve в пакете Hmisc.