R ggplot2:从包含geom_直方图的绘图对象读取最大条形高度

R ggplot2:从包含geom_直方图的绘图对象读取最大条形高度,r,ggplot2,histogram,R,Ggplot2,Histogram,像这样,我也在使用geom_text注释gglot2中的绘图。我想把这些注释放在相对坐标(刻面H&W的比例)而不是数据坐标中。对于大多数绘图来说都很简单,但在我的例子中,我处理的是直方图。我确信关于y比例的相关信息一定隐藏在plot对象的某个地方(在添加geom_histogram之后),但我看不出在哪里 我的问题:如何从包含geom_直方图的多面ggplot2对象读取最大条形高度?有人能帮忙吗?试试这个: library(plyr) library(scales) p <- ggplo

像这样,我也在使用
geom_text
注释gglot2中的绘图。我想把这些注释放在相对坐标(刻面H&W的比例)而不是数据坐标中。对于大多数绘图来说都很简单,但在我的例子中,我处理的是直方图。我确信关于y比例的相关信息一定隐藏在plot对象的某个地方(在添加
geom_histogram
之后),但我看不出在哪里

我的问题:如何从包含
geom_直方图的多面ggplot2对象读取最大条形高度?有人能帮忙吗?

试试这个:

library(plyr)
library(scales)

p <- ggplot(mtcars, aes(mpg)) + geom_histogram(aes(y = ..density..)) + facet_wrap(~am)
r <- print(p)
# in data coordinate
(dc <- dlply(r$data[[1]], .(PANEL), function(x) max(x$density)))
(mx <- dlply(r$data[[1]], .(PANEL), function(x) x[which.max(x$density), ]$x))

# add annotation (see figure below)
p + geom_text(aes(x, y, label = text), 
  data = data.frame(x = unlist(mx), y = unlist(dc), text = LETTERS[1:2], am = 0:1),
  colour = "red", vjust = 0)


# scale range
(yr <- llply(r$panel$ranges, "[[", "y.range"))
# in relative coordinates
(rc <- mapply(function(d, y) rescale(d, from = y), dc, yr))
库(plyr)
图书馆(比例尺)

你是指数据坐标中的最大条高,还是指相对坐标中的面高?嗯,当我键入它时,我指的是数据坐标。我可以用它加上扩展因子来得到我需要的位置,文本geom。有更好的方法吗?如果您想在每个方面的条顶部进行注释,请参阅我的答案。否则,请你把事情弄清楚,特别是你最后想做什么?对不起,我不清楚。我想像你们所展示的那个样进行注释,你们的回答引导我找到了我需要的东西。请参见您答案下面的注释。我缺少的一个部分是这个(r Oops。分散注意力:我缺少的一个部分是这个(r如果每个面都有不同的y范围,那么您需要为每个面获取它。
r$panel$ranges[[1]]$y.range
仅返回第一个facet.Understand的值。我使用的是固定比例。谢谢!我看不到ggplot对象内的范围或面板。我没有使用facet。如果没有facet,解决方案会有所不同吗?@kohske