Czy można mieć dwie legendy z ggplot2, ale na podstawie różnych zestawów danych? Na przykład w poniższym kodzie chciałbym otrzymać zarówno legendę pierwszej sytuacji, jak i legendę drugiej sytuacji w tej samej grafice. Moja próba (trzecia sytuacja) nie działa.dwie legendy oparte na różnych zestawach danych z ggplot2
library(ggplot2)
library(scales)
yrng <- range(economics$unemploy)
xrng <- range(economics$date)
presidential <- presidential[-(1:3), ]
# add a fictive factor to the economics dataset
economics <- cbind.data.frame(economics, col=gl(2, nrow(economics)/2))
#####################
## first situation ##
#####################
# first plot with legend
unemp <- qplot(date, unemploy, data=economics, geom="line",
xlab = "", ylab = "No. unemployed (1000s)", colour=col)
# second plot without legend
unemp + geom_vline(aes(xintercept = start), data = presidential)
######################
## second situation ##
######################
# first plot without legend
unemp <- qplot(date, unemploy, data=economics, geom="line",
xlab = "", ylab = "No. unemployed (1000s)")
# second plot with legend
unemp +
geom_rect(aes(NULL, NULL, xmin = start, xmax = end,
fill = party), ymin = yrng[1], ymax = yrng[2],
data = presidential) +
scale_fill_manual(values = alpha(c("blue", "red"), 0.2))
#####################
## third situation ##
#####################
# first plot with legend
unemp <- qplot(date, unemploy, data=economics, geom="line",
xlab = "", ylab = "No. unemployed (1000s)", colour=col)
# second plot with legend
unemp +
geom_rect(aes(NULL, NULL, xmin = start, xmax = end, fill = party), ymin = yrng[1],
ymax = yrng[2], data = presidential) +
scale_fill_manual(values = alpha(c("blue", "red"), 0.2))
Error in data.frame(xmin = 11342, xmax = 14264, fill = "Republican", colour = function (x, :
arguments imply differing number of rows: 1, 0
Twój kod powinien być idealnie łatwo wyciąć i wkleić do R. Jak obecnie masz znaki '>' i '+', które nie pozwalają na to. Trudno zobaczyć, co robisz w wyniku. –
@ mindless.panda To nie jest problem: skopiuj kod, a następnie "Paste commands only" w konsoli R :-) –
Zakładasz, że wszyscy używają standardowej konsoli R. =) –