【发布时间】:2012-02-14 19:11:04
【问题描述】:
我想在使用两个 geom_line 图和 scale_colour_manual 的 ggplot 图表中为图例键标签使用一个变量。如果我明确使用字符串来定义图例键标签,则一切正常,就像第 6.4.4 节一样。在哈德利的书中,第 109 页。
另一方面,如果我在变量中弹出标签并在 geom_line 和 scale_colour_manual 调用中使用该变量,则不会发生任何事情。
如您所见,plot 'p1' 工作正常。 Plot 'p2' 不显示两条线图,尽管它确实显示了正确的键标签。下面给出了用于生成这两个图的代码。 (这个请求的背景是我想将图例键标签传递给包装函数。)
问。为什么下面 p2 中使用的方法不起作用?如何使用变量来定义键标签并将它们链接到键标签中的正确颜色?
require(ggplot2)
require(lubridate)
set.seed(12345)
# create dummy time series data
monthsback <- 60
startdate <- as.Date(paste(year(now()),month(now()),"1",sep="-")) - months(monthsback)
x <- data.frame(mydate=seq(as.Date(startdate), by="month", length.out=monthsback),
myval1=runif(monthsback, min=600, max=800),
myval2=runif(monthsback, min=400, max=600))
var1 <- "foo-var"
var2 <- "bar-var"
p1 <- ggplot(x, aes( mydate, myval1)) +
geom_line( aes( x = mydate, y = myval1, colour = "foo"), size = 0.5) +
geom_line( aes( x = mydate, y = myval2, colour = "bar"), size = 0.5) +
scale_colour_manual("Legend", values = c("foo" = "red", "bar" = "blue"))
print (p1)
p2 <- ggplot(x, aes( mydate, myval1)) +
geom_line( aes( x = mydate, y = myval1, colour = var1), size = 0.5) +
geom_line( aes( x = mydate, y = myval2, colour = var2), size = 0.5) +
scale_colour_manual("Legend", values = c(var1 = "red", var2 = "blue"))
#print (p2)
【问题讨论】: