Tôi đang cố gắng thêm bảng dữ liệu vào biểu đồ được tạo bằng ggplot (tương tự như chức năng excel nhưng với tính linh hoạt để thay đổi trục của nó)R thêm dữ liệu vào biểu đồ ggplot bằng cách sử dụng viewPorts: Mở rộng Grob
tôi đã có một vài đi vào nó và tiếp tục nhấn một vấn đề với mở rộng quy mô nên cố gắng 1) là
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))
mà sản xuất
nỗ lực thứ hai 2) là
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)
mà sản xuất
và cuối cùng là 3) được
grid.newpage()
print(a + annotation_custom(grob=xtb,xmin=0,xmax=37,ymin=450,ymax=460))
mà sản xuất
Trong số chúng, tùy chọn 2 sẽ là tốt nhất nếu tôi có thể mở rộng bảngGrob thành cùng kích thước với cốt truyện, nhưng tôi không biết cách thực hiện điều đó. Có bất kỳ gợi ý nào về cách thực hiện điều này hơn nữa không? - Cảm ơn
thanks @baptiste Tôi chưa có cơ hội để kiểm tra điều này. Sẽ làm như vậy vào cuối tuần nhưng điều này trông giống như câu trả lời đúng. Cảm ơn cũng cho một gói tuyệt vời –
nhờ @ baptiste hoạt động như một say mê. Hoan hô! –
Câu hỏi nhanh @baptiste tôi có phải tải 'source_gist' mỗi lần không? Khi bạn dự đoán tableGrob thử nghiệm sẽ nhập mã chính? –