ggplot2:为什么我的文本注释不对齐?

时间:2016-09-07 13:08:52

标签: r ggplot2

我正在尝试使用var userAgent = $window.navigator.userAgent; /(iPhone|iPad|iPod).* OS 9_\d/.test(userAgent) && !/Version\/9\./.test(userAgent); 标记直线段。但是,将注释的角度设置为线的斜率不会将注释与线段对齐。

annotate

这给出了:

enter image description here

有人可以帮助解释这种现象,以及如何解决这个问题,即对齐注释以使其与线段具有相同的角度?

1 个答案:

答案 0 :(得分:2)

我相信这会给你你想要的东西。请参阅此答案以供参考Get width of plot area in ggplot2

#Plot so we can reference the viewport
ggplot(data.frame(x = seq(0, 14, 0.1)), aes(x = x)) + 
  stat_function(fun = function(x) {
    14 - x
  }, geom = "line")

#Get the currentVPtree and then convert the VP's height/width to inches
current.vpTree()
a <- convertWidth(unit(1,'npc'), 'inch', TRUE)
b <- convertHeight(unit(1,'npc'), 'inch', TRUE)

#Replot using the ratio of a/b to get the appropriate angle
ggplot(data.frame(x = seq(0, 14, 0.1)), aes(x = x)) + 
  stat_function(fun = function(x) {
    14 - x
  }, geom = "line") + 
  theme_bw()+ 
  annotate(
    geom = "text", 
    x = 7.5, y = 7.5,
    label = "x + y = 14",
    angle = (atan(a/b) * 180/pi) + 270) 

我们基本上得到视口宽度/高度然后使用简单几何(反正切,因为我们有三角形的两边)来计算线的实际角度。

结果:

enter image description here