gpt4 book ai didi

r - R使用viewPorts将数据表添加到ggplot图中:缩放Grob

转载 作者:行者123 更新时间:2023-12-03 23:22:03 25 4
gpt4 key购买 nike

我正在尝试将数据表添加到ggplot中制作的图形中(类似于excel功能,但可以灵活地更改其上的轴)

我已经做了一些尝试,并不断遇到缩放问题,所以尝试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))


产生了



如果我可以将tableGrob缩放到与绘图相同的大小,那么选项2将是最好的,但是我不知道该怎么做。关于如何进一步做到这一点的任何指示? - 谢谢

最佳答案

您可以尝试使用新版本的tableGrob;可以将生成的表宽度/高度设置为特定大小(此处为等分npc单位)

library(ggplot2)
library(gridExtra)
library(grid)
tg <- tableGrob(head(iris), rows=NULL)
tg$widths <- unit(rep(1/ncol(tg),ncol(tg)),"npc")
tg$heights <- unit(rep(1/nrow(tg),nrow(tg)),"npc")

qplot(colnames(iris), geom="bar")+ theme_bw() +
scale_x_discrete(expand=c(0,0)) +
scale_y_continuous(lim=c(0,2), expand=c(0,0)) +
annotation_custom(ymin=1, ymax=2, xmin=-Inf, xmax=Inf, tg)


enter image description here

关于r - R使用viewPorts将数据表添加到ggplot图中:缩放Grob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15826831/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com