我希望用ggplot创建的colourbar与spplot函数(来自lattice包)创建的类似。像附加图像那样将每个有限数量的颜色分配给矩形块,而不是创建连续的颜色光谱。我需要能够定义颜色条的轮廓颜色以及刻度线的格式。
我把这个简单的例子放在一起。如何将其更改为与此附加图像类似的内容?例如,我希望图例从-3开始,以3个10块颜色结束。我已经在“指南”功能中尝试了'nbin'。但是我需要将标签放在颜色块的“边缘”而不是它们的中间(即箱子的中心)。
ps:有时ggplot会创建超出颜色条长度的标签!
library(ggplot2)
dat <- data.frame(x = rnorm(100), y = rnorm(100), col=rnorm(100))
ggplot(dat, aes(x,y,color=col)) +
geom_point() +
scale_color_gradient2(limits=c(-3,3), midpoint=0) +
guides(color=guide_colourbar(nbin=10, raster=FALSE))
答案 0 :(得分:1)
我认为使用最新(公开)版本的ggplot2无法满足您的要求。
丑陋的方法,由您自行决定
但是,如果你安装开发版本(这导致某些版本与我机器上的其他软件包发生冲突,我猜有些东西还没有完全正常工作)使用
devtools::install_github("tidyverse/ggplot2")
library(ggplot2)
您将获得更多选项来修改ticks.colour
,frame.colour
或frame.linewidth
等指南,以便您根据自己的要求自定义颜色栏:
set.seed(6)
dat <- data.frame(x = rnorm(100), y = rnorm(100), z=rnorm(100))
ggplot(dat, aes(x,y,color=z)) + geom_point() +
scale_color_gradientn(colours=c("blue","gray80","red"), limits=c(-3,3),
breaks=c(-3/9*8,-3/9*4,0,3/9*4,3/9*8), labels=c(-2.4,-1.2,0,1.2,2.4), na.value = "green",
guide=guide_colorbar(nbin=10, raster=F, barwidth=20, frame.colour=c("black"),
frame.linewidth=1, ticks.colour="black", direction="horizontal")) +
theme(legend.position = "bottom")
colours = c()
指定颜色矢量breaks
与labels
一起使用,以沿着色条在正确的位置手动指定标签。 编辑:我们可以通过将3(沿着颜色条的一半长度)除以9来轻松计算沿着颜色条所需的位置(从条形中间到中心有9个半框)第一个框)并将其乘以我们希望标签出现的半框数。limits
以外的值将根据na.value
name = "Your Variable Name"
来替换colorbar旁边的z
我认为没有办法将-3 / 3放在颜色条的最末端,除了手动将文本元素放在图中的正确位置(我强烈反对)。