我想添加一個數據表到ggplot中製作的圖表(類似於excel功能但具有更改軸的靈活性)R使用視口添加數據表到ggplot圖:縮放Grob
我已經有幾無二它,並保持擊中縮放等等問題嘗試1)是
library(grid)
library(gridExtra)
library(ggplot2)
xta=data.frame(f=rnorm(37,mean=400,sd=50))
xta$n=0
for(i in 1:37){xta$n[i]<-paste(sample(letters,4),collapse='')}
xta$c=0
for(i in 1:37){xta$c[i]<-sample((1:6),1)}
rect=data.frame(xmi=seq(0.5,36.5,1),xma=seq(1.5,37.5,1),ymi=0,yma=10)
xta=cbind(xta,rect)
a = ggplot(data=xta,aes(x=n,y=f,fill=c)) + geom_bar(stat='identity')
b = ggplot(data=xta,aes(x=n,y=5,label=round(f,1))) + geom_text(size=4) + geom_rect(aes(xmin=xmi,xmax=xma,ymin=ymi,ymax=yma),alpha=0,color='black')
z = theme(axis.text=element_blank(),panel.background=element_rect(fill='white'),axis.ticks=element_blank(),axis.title=element_blank())
b=b+z
la=grid.layout(nrow=2,ncol=1,heights=c(0.15,2),default.units=c('null','null'))
grid.show.layout(la)
grid.newpage()
pushViewport(viewport(layout=la))
print(a,vp=viewport(layout.pos.row=2,layout.pos.col=1))
print(b,vp=viewport(layout.pos.row=1,layout.pos.col=1))
它生產
第二次嘗試2)是
xta1=data.frame(t(round(xta$f,1)))
xtb=tableGrob(xta1,show.rownames=F,show.colnames=F,show.vlines=T,gpar.corefill=gpar(fill='white',col='black'),gp=gpar(fontsize=12),vp=viewport(layout.pos.row=1,layout.pos.col=1))
grid.newpage()
la=grid.layout(nrow=2,ncol=1,heights=c(0.15,2),default.units=c('null','null'))
grid.show.layout(la)
grid.newpage()
pushViewport(viewport(layout=la))
print(a,vp=viewport(layout.pos.row=2,layout.pos.col=1))
grid.draw(xtb)
它生產
和最後3)
grid.newpage()
print(a + annotation_custom(grob=xtb,xmin=0,xmax=37,ymin=450,ymax=460))
它生產
其中選項2將是最好的,如果我可以將tableGrob縮放到與情節相同的大小,但我不知道該怎麼做。任何關於如何進一步採取的指針? - 謝謝
謝謝@baptiste我還沒有機會測試這個呢。將在週末這樣做,但這看起來是正確的答案。感謝一個了不起的包裹 – 2013-04-12 10:28:30
感謝@baptiste像一個魅力。萬歲! – 2013-04-14 06:29:36
快速問題@baptiste每次都必須加載'source_gist'嗎?當你預計實驗桌上的Grob會進入主流代碼? – 2013-04-14 09:18:42