У меня есть вопрос о построении точек и линий на том же участке, используя ggplot2
. Коды для генерации фиктивных данных приведены ниже:добавить точечные и линейные слои с настраиваемыми легендами в ggplot2
library(ggplot2)
set.seed(111)
x = seq(1,10,length=10)
y1 = rnorm(10, 0, 0.1)
y2 = rnorm(10, 5, 0.1)
y3 = rnorm(10, 10, 0.3)
y4 = rnorm(10, 20, 0.4)
label = c(rep("Cat",10), rep("Dog", 10), rep("Owl", 10), rep("Eagle", 10))
dat1 = data.frame(cbind(x, y=y1))
dat2 = data.frame(cbind(x, y=y2))
dat3 = data.frame(cbind(x, y=y3))
dat4 = data.frame(cbind(x, y=y4))
dat = data.frame(rbind(dat1, dat2, dat3, dat4))
dat = cbind(dat, label)
dat
я использую следующие коды для генерации участка:
ggplot(dat, aes(x=x, y=y, colour=label)) +
geom_line(data=dat[dat$label=="Cat", ], aes(x=x, y=y, linetype=label)) +
geom_line(data=dat[dat$label=="Dog", ], aes(x=x, y=y, linetype=label)) +
geom_point(data=dat[dat$label=="Owl", ], aes(x=x, y=y, colour=label)) +
geom_point(data=dat[dat$label=="Eagle", ], aes(x=x, y=y, colour=label)) +
scale_color_manual("Animal",
values = c("Cat" = "darkgreen",
"Dog" = "blue",
"Owl" = "red",
"Eagle" = "cyan")) +
theme_bw() +
scale_linetype_manual(values=c(1,2)) +
scale_alpha_manual(values=c(0.8, 0.8, 0.2, 0.2)) +
scale_size_manual(values=c(1.8, 1.8, 0.6, 0.6)) +
theme(legend.key=element_blank(),
legend.key.width = unit(3, "line"),
legend.key = element_blank())
Выходного ток участок выглядит следующим образом:
следующие пункты необходимо изменить, чтобы получить мой желаемый график:
- удалите легенду «этикетки» и покажите только легенду «Животное»
- для легенд «Cat» и «Dog», только отображающие точки, а не линии; для «Совы» и легенды «Орел», показываю только линию, а не точки
- типов линий в легенде должны соответствуют тем в сюжете
- порядка легенды должна быть в том же порядке, как я указать метку: Кошка, Собака, Сова и Иглы
- Я надеюсь, что линии тиккер (ширина = 2, например), а точки являются более прозрачными (альфа = 0,4, например)
положение легенды находится внутри участка , не для снаружи
Я ценю вашу помощь/предложения. Спасибо!
спасибо! Это именно то, что я хочу :) – alittleboy
Извините, у меня есть еще один вопрос: есть ли способ скрыть легенду для «Eagle»? Я просто хочу показать легенды других трех переменных, но на графиках должны отображаться все четыре переменные. Благодаря! – alittleboy
Добавить аргумент 'breaks = c (" Cat "," Dog "," Owl ")' ко всем трем функциям 'scale _...' –