我在ggplot2 (对ChickWeight数据帧的虚构修改)中有以下绘图:
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这会产生以下结果:

这很好,除了图例。
我希望图例是四对:
饮食1-M (紫色,实线),饮食1-F (紫色,破碎线),
饮食2-M (绿色,实线),饮食2-F (绿色,破碎线),....
诸若此类。假设我想把标签放在一个2x2的块中。我相信我可以将标签放在一个2x2的块中,使用
p1 + guides(fill=guide_legend(nrow = 2, ncol = 2))但我遇到的问题是,如何为这四对饮食-性别组合创造传奇。任何建议都将是一个很大的帮助!
发布于 2015-11-15 09:42:50
您可以使用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))

https://stackoverflow.com/questions/33715241
复制相似问题