【问题标题】:Mapping a different factor to the legend labels in R ggplot将不同的因素映射到 R ggplot 中的图例标签
【发布时间】:2016-06-29 13:38:18
【问题描述】:

我想在我的图例中提供更多信息。我想使用 ID 为每个图表赋予唯一的颜色。但是我的图例标签我想包含一个因素的信息,该因素对于不同的 ID 可以是相等的,但对于一个 ID 来说总是不变的。 示例:

mydata <- data.frame(x=rep(1:10,5),
y=rep((1:10),5)*sort(rep((10:14)/10,10)),
ID=sort(rep(1:5,10)),
info1=sort(rep(c("A","B","C","D","C"),10)),
info2=sort(rep(c("GG","HH","HH","GG","II"),10)))

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line()

这给了我应有的情节加上一个显示 ID 的图例。

现在我的问题是如何用 info1 中的因子替换 ID,同时为每个图形保留不同的颜色。更好的是在一个图例中包含来自 info1 和 info2 的信息...

我知道如何使用额外的 invisibe 图来获得额外的图例,但这并不是我想要的:

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID)))+geom_line() +
geom_point(aes(shape=NA,size=info1,fill=info2)) + guides(color=FALSE)

相反,我想要第一张图片中的图例,但第二张图片中的信息(标签)。当然,只是从 data.frame 中获取信息,而不是明确给出。

感谢您的建议

【问题讨论】:

  • 所以您的图例中有 5 种颜色,但有 7 个显示尺寸的项目,您如何尝试将它们配对?
  • Nathan,当您查看数据框 (mydata) 的构造方式时,您会注意到我只有 5 个“项目”,其中包含不同的因素集(ID、info1、info2)来描述它们. ID是唯一的,info1有4层,info2有3层。

标签: r ggplot2 legend


【解决方案1】:

IDinfo1info2 粘合在一起并将其用作ID 是否可行?

mydata$ID2 = paste(mydata$ID,paste(mydata$info1),paste(mydata$info2), sep='-')

ggplot(mydata,aes(x=x,y=y,color=as.factor(ID2)))+geom_line()

【讨论】:

  • 好吧,我认为这是一种可接受的解决方法,谢谢 Gene。似乎没有纯粹的 ggplot 方法可以做到这一点。实际上这是一项非常常见的任务,将一些元数据放在实验结果中......
  • @lambu0815,如果可行,您会将其标记为答案吗?谢谢:)
  • 基因,我想再开一两天。
  • 好的,当然,这个解决方案有一个缺点——我必须包含唯一的 ID,否则 3&4 会落在一起,因为元数据的两个因素都是相同的。但它们仍然是独立的实验......
  • @lambu0815,我不确定我是否遵循。如果要删除 ID 字段,则两者在图上将无法区分,我认为这会使图解释器感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多