r - 如何在 ggplot 中创建类似于 Lattice 创建的颜色条
问题描述
我希望用 ggplot 创建的颜色条与 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))
解决方案
我认为使用最新(公共)版本的 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"
替换z
颜色栏旁边的
除了手动将文本元素放置在绘图中的正确位置(我强烈建议不要这样做)之外,我认为没有办法将 -3 / 3 放在颜色条的最末端。
推荐阅读
- c# - ASP.NET Core 2 中的问题配置选项
- python - 切换为相同功能引用相同代码的按钮
- r - 将数据框转换为 r 中的面板数据集
- typo3 - TYPO3 tx_form - 如何使用提供的输入值生成 pdf 并将其附加到电子邮件
- node.js - 在对象中查找属性并返回完整路径
- php - 为 JSON 对象数组命名:进入 php
- c++ - 编译时继承类中的隐式虚拟与显式虚拟
- c# - 如何在 Identity ASP.NET Core 2.1(Identity Scaffolded)中播种用户角色
- c# - 添加假 I/O 进行测试
- c# - 如何在 Unity 中更改对象的轴心点