【问题标题】:Colorbar guide with string labels带字符串标签的彩条指南
【发布时间】:2019-12-30 13:42:40
【问题描述】:

我想用字符描述(例如“低”和“高”)而不是实际数字来修改连续美学的guide_colorbar。当使用一个图例或颜色条绘制多个图(热图,例如geom_bin2d)时,这可能特别有用。

这里是一个例子。

说给定的虚拟数据:

dd <- data.frame(xx=rnorm(100),yy=rnorm(100),zz=rep(1:10,10))

我可以照常做

ggplot(dd,aes(xx,yy,color=zz))+
  geom_point()+
  viridis::scale_color_viridis(option='A',direction=-1)

并使用隐藏颜色条注释

guides(color=guide_colorbar(ticks=F,label=F,title=element_blank()))

我尝试的另一种方法是修改颜色美学

factor(zz,labels=c('low',2:9,'high'))
...
guides(color=guide_legend(override.aes=list(size=5,shape=15)))

并绘制为离散的。也不是很想要。

如何向guide_colorbar 添加自定义文本? 或者: 有没有办法将离散图例转换为颜色条并保留字符标签?

【问题讨论】:

标签: r ggplot2


【解决方案1】:

@Atreyagaurav 指出了一个非常有用的线程,但它不是真正的重复,因为 OP 要求提供指南。这里的一种方法包括对中断进行编程计算。


    library(ggplot2)

    dd <- data.frame(xx=rnorm(100),yy=rnorm(100),zz=rep(1:10,10))

    # list of functions to calculate the values where you want your breaks
    myfuns <- list(min, median, max)
    # use this list to make a list of your breaks
    list_val <- lapply(myfuns, function(f) f(dd$zz))

    # to use the list, unlist it first
    ggplot(dd,aes(xx,yy,color=zz))+
      geom_point()+
      scale_color_gradient2(breaks = unlist(list_val), labels = c('min','med','max'))

编辑 您还可以使用命名列表 - 您可以将其用作您的中断参数,并且不再需要添加标签。这也可能更安全,因为标签将始终正确分配给计算值。

    myfuns_nam <- list(min = min, med = median, max = max)

    list_val_nam <- lapply(myfuns_nam, function(f) f(dd$zz))

    ggplot(dd,aes(xx,yy,color=zz))+
      geom_point()+
      scale_color_gradient2(breaks = unlist(list_val_nam))

同上图

reprex package (v0.3.0) 于 2019 年 12 月 30 日创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多