首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ggplot2中创建多个混合图例

如何在ggplot2中创建多个混合图例
EN

Stack Overflow用户
提问于 2015-11-15 09:00:44
回答 1查看 351关注 0票数 0

我在ggplot2 (对ChickWeight数据帧的虚构修改)中有以下绘图:

代码语言:javascript
复制
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的块中,使用

代码语言:javascript
复制
p1 + guides(fill=guide_legend(nrow = 2, ncol = 2))

但我遇到的问题是,如何为这四对饮食-性别组合创造传奇。任何建议都将是一个很大的帮助!

EN

回答 1

Stack Overflow用户

发布于 2015-11-15 09:42:50

您可以使用interaction函数生成DietSex的所有组合,然后手动将颜色和线型设置为每个饮食-性别组合所需的值,从而获得单个图例。

代码语言:javascript
复制
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))

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33715241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档