我用ggplot2创建了这个情节:

外线需要对应Y刻度(即Text1的线的Y位置应为100和85).我可以通过在条形图右侧绘制一个空白绘图并使用与条形图相同的比例然后使用注释函数绘制线来实现此目的.另一种方法是简单地"手动"绘制线条grid.lines,但是坐标grid.lines不对应于图形的Y标度.
是否有可能以某种方式使用不同的方法绘制这些线?我认为必须完成它grid.lines.我怎么能把条形图的Y coordindates传递给grid.lines?
下面是用于创建此图的最小代码:
library (ggplot2)
test= data.frame(
group=c(rep(1,6), rep(2,6)),
subgroup=c( 1,1,1,2,2,2,1,1,1,2,2,2),
category=c( rep(1:3, 4)),
count=c( 10,80,10,5,90,5, 10,80,10,5,90,5 )
)
qplot(subgroup,
count,
data=test,
geom="bar",
stat="identity",
fill =category,
facets = .~ group, width=0.9)+
opts(legend.position="none",
plot.margin = unit(c(0,9,2,0), "lines"))
Run Code Online (Sandbox Code Playgroud)

如何画出条形图右侧的线条?
我最近在ggplot2中问了一个关于在绘图区域之外绘制文本的问题,解决方案是使用gt$layout和grid.draw.
可以在这里使用类似的方法吗?据我所知,annotation_custom仅适用于文本,不适用于其他图形元素.谢谢
我试图用ggplot2重现以下[base R]图

我已经完成了大部分工作,但目前让我感到困惑的是将线段放置在图表右侧与相应标签相连的边缘地毯图上.标签已被绘制(在下面的第二个图中)anotation_custom()并且我已经使用@ baptiste的关闭剪裁的技巧以允许绘制绘图边距.
尽管进行了许多尝试,但我无法将其放置segmentGrobs()在设备中的所需位置,以便它们加入正确的地毯标签和标签.
一个可重复的例子是
y <- data.frame(matrix(runif(30*10), ncol = 10))
names(y) <- paste0("spp", 1:10)
treat <- gl(3, 10)
time <- factor(rep(1:10, 3))
require(vegan); require(grid); require(reshape2); require(ggplot2)
mod <- prc(y, treat, time)
Run Code Online (Sandbox Code Playgroud)
如果您没有安装素食主义者,我会dput在问题的最后添加一个强化对象,并且fortify()您希望运行该示例并fortify()使用方便的绘图ggplot().我还包括一个有点冗长的函数,myPlt()它说明了我到目前为止所做的工作,如果你已经加载了包并且可以创建,它可以用在示例数据集上mod.
我已经尝试了很多选项但是我现在似乎正在黑暗中挣扎以正确放置线段.
我不是在寻找绘制示例数据集的标签/段的具体问题的解决方案,而是我可以用来以编程方式放置段和标签的通用解决方案,因为这将构成autoplot()对象的方法的基础class(mod).我有标签制定好了,不是线段.那么问题:
xmin,xmax,ymin,ymax使用时,我希望把包含从数据坐标运行线路段GROB参数x0,y0来x1,y1?annotation_custom()绘制段 …