我想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
?或者:是否可以将离散图例转换为颜色条并保留字符标签?
@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'))
编辑您还可以使用一个命名列表-您可以将其用作break参数,并且不再需要添加标签。这也可能更安全,因为标签将始终正确分配给计算值。
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软件包(v0.3.0)创建于2019-12-30
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句