【问题标题】:Creating custom legends in ggplot2在 ggplot2 中创建自定义图例
【发布时间】:2013-08-24 14:29:23
【问题描述】:

我正在尝试创建一个图例,该图例将采用自定义标签和颜色,alphas 对应于注释图中突出显示的区域,而不是使用代码在图表中绘制的数据系列:

library(ggplot2)
data(economics)
p1 <- ggplot(data=economics, mapping=aes(x=date, y=unemploy)) +
  geom_line(size=1) +
  annotate("rect", xmin=as.Date('1970-01-01'), xmax=as.Date('1980-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="red") +
  annotate("rect", xmin=as.Date('1990-01-01'), xmax=as.Date('2000-01-01'), ymin=-Inf, ymax=Inf, alpha=0.2, fill="green") +
p1

我想在其中添加一个带有标签的图例,标签为“1970s”、“1990s”,相应的颜色为红色和绿色,alpha 为 0.2,对应于注释元素。有没有办法做到这一点?

【问题讨论】:

    标签: r plot ggplot2 legend annotate


    【解决方案1】:

    最简单的方法是为应该注释的区域制作新的数据框。

    df<-data.frame(xmin=as.Date(c('1970-01-01','1990-01-01')),
                   xmax=as.Date(c('1980-01-01','2000-01-01')),
                   ymin=c(-Inf,-Inf),
                   ymax=c(Inf,Inf),
                   years=c("1970s","1990s"))
    

    然后使用geom_rect() 和这个新数据框来添加这些区域。图例将自动生成。使用 scale_fill_manual() 你可以改变颜色。

    ggplot(data=economics, mapping=aes(x=date, y=unemploy)) +
      geom_line(size=1)+
      geom_rect(data=df,aes(xmin=xmin,ymin=ymin,xmax=xmax,ymax=ymax,fill=years),
                        alpha=0.2,inherit.aes=FALSE)+
      scale_fill_manual(values=c("red","green"))
    

    【讨论】:

    • 刚刚适应了片段,效果很神奇! Liels paldies,Didzi!
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多