当 scale = 'free_y' + ggplot2 + r 时,在 facet_grid 中的一致位置添加文本注释
Add text annotations at consistent locations in facet_grid when scale = 'free_y' + ggplot2 + r
我需要在 y 轴刻度设置为 scale = 'free_y'
的分面网格中注释一组聊天。
由于比例非常不同,当我设置 geom_text 的 y 位置时,每个图形的文本位置也非常不同。有没有什么方法可以纠正这个问题,使它们在小平面网格中的每个图表上都处于相同的 x,y 位置?
下面的例子演示了这个问题:
library(ggplot2)
df <- data.frame(name = c('Jim',"Bob", "Sue",'Jim',"Bob", "Sue",'Jim',"Bob", "Sue"),
r = c(1,10,100,2,20,200,3,30,300), z = c(1,10,100,2,20,200,3,30,300))
p <- ggplot(df, aes(z, r)) + geom_line()
p <- p + facet_grid(vars(name),scales = "free")
dfl <- data.frame(name = c('Jim',"Bob", "Sue"), r = c(-0.2, 0.5, -0.4))
p + geom_text(data = dfl, aes(200, 10,label = r), check_overlap = T)
理想情况下,在此示例中,所有标签都与灰度“Bob”中第一个图表的位置相同。
我已经回顾了之前的问题,它解决了分面网格中单个图表上的文本注释,但没有解决每个分面不同 y 刻度的情况下的放置 - Annotating text on individual facet in ggplot2
以下是控制注释的方法:
p + geom_text(
size = 5,
data = dat_text,
mapping = aes(x = Inf, y = Inf, label = label),
hjust = 1.05,
vjust = 1.5
)
dat_text <- data.frame(
label = c(-0.2, 0.5, -0.4),
name = c('Jim', 'Bob', 'Sue')
)
我需要在 y 轴刻度设置为 scale = 'free_y'
的分面网格中注释一组聊天。
由于比例非常不同,当我设置 geom_text 的 y 位置时,每个图形的文本位置也非常不同。有没有什么方法可以纠正这个问题,使它们在小平面网格中的每个图表上都处于相同的 x,y 位置?
下面的例子演示了这个问题:
library(ggplot2)
df <- data.frame(name = c('Jim',"Bob", "Sue",'Jim',"Bob", "Sue",'Jim',"Bob", "Sue"),
r = c(1,10,100,2,20,200,3,30,300), z = c(1,10,100,2,20,200,3,30,300))
p <- ggplot(df, aes(z, r)) + geom_line()
p <- p + facet_grid(vars(name),scales = "free")
dfl <- data.frame(name = c('Jim',"Bob", "Sue"), r = c(-0.2, 0.5, -0.4))
p + geom_text(data = dfl, aes(200, 10,label = r), check_overlap = T)
理想情况下,在此示例中,所有标签都与灰度“Bob”中第一个图表的位置相同。
我已经回顾了之前的问题,它解决了分面网格中单个图表上的文本注释,但没有解决每个分面不同 y 刻度的情况下的放置 - Annotating text on individual facet in ggplot2
以下是控制注释的方法:
p + geom_text(
size = 5,
data = dat_text,
mapping = aes(x = Inf, y = Inf, label = label),
hjust = 1.05,
vjust = 1.5
)
dat_text <- data.frame(
label = c(-0.2, 0.5, -0.4),
name = c('Jim', 'Bob', 'Sue')
)