在ggplot2生成的绘图下方显示文本

我试图在ggplot2中创建的绘图下方显示一些有关数据的信息。我想使用绘图的X轴坐标来绘制N变量,但是Y坐标需要距屏幕底部10%。实际上,所需的Y坐标已作为y_pos变量存在于数据框中。


我可以想到使用ggplot2的3种方法:


1)在实际图下方创建一个空图,使用相同的比例,然后使用geom_text在空白图上绘制数据。这种方法虽然有效,但非常复杂。


2)geom_text用于绘制数据,但以某种方式将y坐标用作屏幕的百分比(10%)。这将迫使数字显示在绘图下方。我不知道正确的语法。


3)使用grid.text显示文本。我可以轻松地将其设置为距离屏幕底部10%的位置,但是我无法确定如何设置X坐标以匹配绘图。我尝试使用grconvert捕获初始X位置,但无法使其正常工作。


下面是带有虚拟数据的基本图:


graphics.off()      # close graphics windows   


library(car)

library(ggplot2)  #load ggplot

library(gridExtra) #load Grid

library(RGraphics) # support of the "R graphics" book, on CRAN


#create dummy data

test= data.frame(

  Group = c("A", "B", "A","B", "A", "B"), 

  x = c(1 ,1,2,2,3,3 ),

  y = c(33,25,27,36,43,25),

  n=c(71,55,65,58,65,58),

  y_pos=c(9,6,9,6,9,6)

  )


#create ggplot

p1 <- qplot(x, y, data=test, colour=Group) +

  ylab("Mean change from baseline") + 

  geom_line()+

  scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1) ) +

  opts( 

        legend.position=c(.1,0.9))


#display plot

p1

下面的修改后的gplot显示了对象的数量,但是它们在图中显示。它们迫使Y比例尺扩展。我想在图表下方显示这些数字。


    p1 <- qplot(x, y, data=test, colour=Group) +

  ylab("Mean change from baseline") + 

  geom_line()+

  scale_x_continuous("Weeks", breaks=seq(-1,3, by = 1) ) +

  opts( plot.margin = unit(c(0,2,2,1), "lines"),

        legend.position=c(.1,0.9))+

  geom_text(data = test,aes(x=x,y=y_pos,label=n))


p1

显示数字的另一种方法涉及在实际图的下方创建一个虚拟图

这非常复杂,很难为不同的数据进行修改。理想情况下,我希望能够将Y坐标作为屏幕的百分比传递。

红颜莎娜
浏览 1445回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP