library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p <- p + facet_grid(. ~ cyl)
p <- p + annotate("text", label = "Test", size = 4, x = 15, y = 5)
print(p)
library(tidyverse)
library(magrittr)
Data1=data.frame(A=runif(20, min = 0, max = 100), B=runif(20, min = 0, max = 250), C=runif(20, min = 0, max = 300))
Data2=data.frame(A=runif(20, min = -10, max = 50), B=runif(20, min = -5, max = 150), C=runif(20, min = 5, max = 200))
6条答案
按热度按时间dgtucam11#
函数
annotate()
将相同的标签添加到具有面的图中的所有面板。如果意图是向每个面板添加不同的注解,或者仅向某些面板添加注解,则必须使用geom_而不是annotate()
。要使用geom,例如geom_text()
,我们需要将包含标签文本的 Dataframe 组装在一个列和用于变量的列中以Map到其它美学,以及用于刻面的变量。通常你会这样做:
字符串
它应该在不完全指定因子变量的情况下工作,但可能会抛出一些警告:
的数据
wfveoks02#
函数
annotate()
将相同的标签添加到具有面的图中的所有面板。如果意图是向每个面板添加不同的注解,或者仅向某些面板添加注解,则必须使用 * 几何 * 而不是annotate()
。要使用几何,例如geom_text()
,我们需要将包含标签文本的 Dataframe 组装在一个列和用于变量的列中以Map到其它美学,以及用于刻面的变量。这个答案证明了facet_wrap()
和facet_grid()
的情况。以下是没有文本注解的图:
字符串
的数据
让我们创建一个额外的数据框来保存文本注解:
型
或者,我们可以手动指定每个标签的位置:
型
我们还可以在两个方面标记图:
型
备注:
-Inf
和Inf
将文本定位在面板的边缘。hjust
和vjust
调整文本对正。dat_text
应该有一个与facet_grid()
或facet_wrap()
兼容的列。voj3qocg3#
如果有人正在寻找一种简单的方法来标记报表或出版物的方面,
egg
(CRAN)包有非常漂亮的tag_facet()
和tag_facet_outside()
函数。字符串
内部标签
默认
型
的数据
**注意:**如果您想保留条带文本和背景,请尝试在
theme
中重新添加strip.text
andstrip.background
或从原始tag_facet()
函数中删除theme(strip.text = element_blank(), strip.background = element_blank())
。型
右上对齐并使用罗马数字
型
左下对齐并使用大写字母
型
自定义标签
型
外部标签
型
编辑:使用stickylabeller包添加另一个替代方案
由reprex package(v0.2.1)创建
uhry853o4#
我认为对于上面的答案lab=“Text”是无用的,下面的代码也是可以的。
字符串
但是,如果你想在不同的子图中使用不同的标签,那么可以这样做:
型
mjqavswn5#
稍微扩展一下joran的精彩回答,以澄清标签“框架”是如何工作的。
你可以把“mpg”和“wt”分别看作是x和y坐标(我发现跟踪原始变量名比重命名它们更容易,正如Kamil的优秀答案一样)。你需要每个标签一行,“cyl”列显示每行与哪个方面相关联。
字符串
的数据
n8ghc7c16#
我不知道
egg
包,所以这里是一个普通的ggplot2
包解决方案。