我在inJustDecodeBounds
(ChickWeight数据框的修改版)中有以下图:
ggplot2
产生以下结果:
这很好,除了传说。
我希望这个传奇有四对:
饮食1-M(紫色,实线), 饮食1-F(彩色紫色,破损线),饮食2-M(绿色,实线), 饮食2-F(绿色,破损线), ....
等等。让我们说我想把标签放在2x2块中。 我相信我可以使用
将标签放在2x2块中require(ggplot2)
ChickWt <- data.frame(ChickWeight, Sex = rep(c("M", "F"), times = 289))
p1 <- ggplot(ChickWt, aes(x=Time, y=weight,
colour=Diet, Group = Chick, linetype = Sex)) + geom_line()
p1
但我难以理解的问题是如何为四对饮食 - 性别组合制作传奇。任何建议都会有很大的帮助!
答案 0 :(得分:1)
您可以使用interaction
函数生成Diet
和Sex
的所有组合,然后手动将颜色和线型设置为您希望的每个值,从而获得单个图例饮食 - 性别组合。
require(ggplot2)
require(dplyr)
# Add Sex column
set.seed(104)
ChickWt = ChickWeight %>% group_by(Chick) %>%
mutate(Sex = sample(c("M","F"),1))
plot.colors = hcl(seq(15,375,length.out=5)[1:4],100,65)
ggplot(ChickWt, aes(x=Time, y=weight,
colour=interaction(Diet,Sex,sep="-"),
linetype = interaction(Diet,Sex,sep="-"),
group=Chick)) +
geom_line() +
scale_colour_manual(values=plot.colors[rep(1:4, 2)], name="Diet-Sex") +
scale_linetype_manual(values=rep(1:2, each=4), name="Diet-Sex") +
guides(colour=guide_legend(ncol=2))