相关疑难解决方法(0)

垂直对齐ggplot2图

使用https://gist.github.com/low-decarie/5886616上的代码 可以生成双树枝状瓷砖图:

dual_dendogram_tile_plot(as.matrix(USArrests),main ="USA Arrests")

在此输入图像描述

问题:将垂直树形图与瓷砖绘图区域对齐.(和/或改善水平树状图的对齐)

这个问题涉及到:

左对齐两个图边(ggplot)
指定ggplot2面板宽度将 相关矩阵绘制到图形中

layout plot r ggplot2 gtable

16
推荐指数
1
解决办法
6291
查看次数

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

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

我已经做了一些事情,并继续遇到缩放的问题所以尝试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))
Run Code Online (Sandbox Code Playgroud)

哪个产生了

2 ggplots

第二次尝试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)
Run Code Online (Sandbox Code Playgroud)

哪个产生了

使用直表grob和grid.draw

最后3)是

grid.newpage()
print(a + annotation_custom(grob=xtb,xmin=0,xmax=37,ymin=450,ymax=460))
Run Code Online (Sandbox Code Playgroud)

哪个产生了

使用annotate_custom

其中选项2将是最好的,如果我可以将tableGrob缩放到与绘图相同的大小,但我不知道如何做到这一点.关于如何进一步采取行动的任何指示?- 谢谢

r viewport ggplot2 gridextra r-grid

13
推荐指数
2
解决办法
8710
查看次数

标签 统计

ggplot2 ×2

r ×2

gridextra ×1

gtable ×1

layout ×1

plot ×1

r-grid ×1

viewport ×1