这是使用以下方法执行此操作的一种方法coord_fixed
:
ratio <- .25/(256/5) # 256/5 is from (512-256)/(8-3)
df1 <- data.frame(x = 1:10, y = 2^(1:10))
d <- data.frame(xmin=3, xmax=8, ymin=256, ymax=512, annotation="bla")
ggplot() + geom_line(data = df1, aes(x=x, y=y)) +
geom_segment(data=d, aes(x=xmin, xend=xmax, y=ymin, yend=ymax)) +
geom_text(data = d, aes(x=4, y=256/5 * 4 + 512/5,
label=annotation, angle=atan2((ymax-ymin)*ratio,
(xmax-xmin)) * 180/pi), vjust=-0.5) + coord_fixed(ratio=ratio)
![在此处输入图像描述](https://i.stack.imgur.com/RSQjk.png)
为了让它达到对数比例,它似乎有点棘手:
ratio <- -log10(.25/(256/5)) # 256/5 is from (512-256)/(8-3)
df1 <- data.frame(x = 1:10, y = 2^(1:10))
d <- data.frame(xmin=3, xmax=8, ymin=256, ymax=512, annotation="bla")
ggplot() + geom_line(data = df1, aes(x=x, y=y)) +
geom_segment(data=d, aes(x=xmin, xend=xmax, y=ymin, yend=ymax)) +
geom_text(data = d, aes(x=4, y=256/5 * 4 + 512/5,
label=annotation, angle=log10(atan2((ymax-ymin)*ratio,
(xmax-xmin)) * 180/pi)), vjust=-0.5) + coord_fixed(ratio=ratio) + scale_y_log10()
![在此处输入图像描述](https://i.stack.imgur.com/0RJIG.png)