gpt4 book ai didi

R:如何使用变量来定义 scale_colour_manual 和键标签颜色?

转载 作者:行者123 更新时间:2023-12-01 11:53:31 26 4
gpt4 key购买 nike

我想在使用两个 geom_line 图和 scale_colour_manual 的 ggplot 图表中为图例键标签使用一个变量。如果我明确使用字符串来定义图例键标签,一切正常,就像第 6.4.4 节一样。在哈德利的书中,第 109 页。

enter image description here

另一方面,如果我在变量中弹出标签并在 geom_line 和 scale_colour_manual 调用中使用该变量,则什么也不会发生。

enter image description here

如您所见,绘图“p1”工作得很好。绘图“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)

最佳答案

我经常这样做,因为我使用了很多“标准化”绘图选项。我确信有一种更优雅的方式来深入研究原型(prototype)对象,但结果是一样的看看 str(tmp) ,您将更好地理解映射的内容:

tmp <-  scale_colour_manual("Legend", values = c(var1 = "red", var2 = "blue"))
# str(tmp)
names(tmp$values) <- c(var1,var2)

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) + tmp

enter image description here

顺便说一句,您可以将 ggplot + ggplot 元素保存到列表中,然后以编程方式编辑列表项(有点像我上面所做的)。

例如:

z <- list(geom_line( aes( x = mydate, y = myval1, colour = var1), size = 0.5),
geom_line( aes( x = mydate, y = myval2, colour = var2), size = 0.5),
tmp)

ggplot(x, aes( mydate, myval1)) + z

关于R:如何使用变量来定义 scale_colour_manual 和键标签颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282726/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com