我试图在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坐标作为屏幕的百分比传递。