R语言学习笔记——在图形下面添加表格

本文介绍如何使用R语言的ggplot2等库进行数据可视化,包括条形图的绘制、误差线的添加及与表格数据的组合展示。同时,讲解了如何利用forcats包调整因子级别,实现图表元素的有序排列。
#install.packages("ggplot2")
library(ggplot2)
#install.packages("ggthemes")
library("ggthemes")
#install.packages("gtable")
library("gtable")
#install.packages("grid")
library("grid")
heights <- read.csv("data.csv")
tem<-read.csv("loup.csv")
lower <- tem[1,]
upper <-tem[2,]
heights<-as.matrix(heights)
lower<-as.matrix(lower)
upper<-as.matrix(upper)
# ggolot
#grid.arrange不适用barplot2()
SummaryTable1<-rbind(lower,heights,upper)
colnames(SummaryTable1)<-c("<0.10","[0.10,0.20)","[0.20,0.30)","[0.30,0.70]",">0.70")
df.plot<-t(SummaryTable1)
df.plot<-cbind(df.plot[,2],df.plot[,1],df.plot[,3])
df.plot<-as.data.frame(df.plot)
#运行的时候发现有时x的顺序会变,嗯,R有时候就是有点痴呆=_=,可以改变x的levels的顺序
#install.packages("forcats")
library(forcats)
xx<-row.names(df.plot)
xx<-as.factor(xx)
xx<-fct_relevel(xx,"<0.10","[0.10,0.20)","[0.20,0.30)","[0.30,0.70]",">0.70")
#如果顺序不对的话,就改为x=xx
plt<-ggplot(df.plot, aes(x=row.names(df.plot), y=df.plot[,1])) + 
  geom_bar(position = 'dodge', stat='identity', width=1.0,fill="lightblue2",col="darkgrey") + 
  xlab(NULL) + coord_cartesian(ylim=c(0,0.9)) + 
  geom_errorbar(aes(ymin = df.plot[,2], ymax = df.plot[,3]), 
                width = 0.2, 
                linetype = "solid")+theme_bw()
plt

# Create a table plot
library(gridExtra)
SummaryTable1<-rbind(lower,heights,upper)
#百分数
SummaryTable1<-paste(round(SummaryTable1*100,2),"%",sep="")
dim(SummaryTable1)<-c(3,5)
row.names(SummaryTable1) <- c("lower","percentage","upper")
colnames(SummaryTable1)<-c("<0.10","[0.10,0.20)","[0.20,0.30)","[0.30,0.70]",">0.70")
tbl <- tableGrob(SummaryTable1, rows=row.names(SummaryTable1), theme= ttheme_minimal())
#tableGrob的更多参数可以参照https://cran.r-project.org/web/packages/gridExtra/vignettes/tableGrob.html
tbl <- gtable_add_grob(tbl,
                     grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
                     t = 2, b = nrow(tbl), l = 1, r = ncol(tbl))
tbl <- gtable_add_grob(tbl,
                     grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
                     t = 1, l = 1, r = ncol(tbl))
#宽度调正,6列
tbl$widths<-rep(1/8,6)
#查看表格
#grid.newpage()
#grid.draw(tbl)
grid.arrange(plt, tbl,
             nrow=2,
             as.table=TRUE,
             heights=c(4,1)
)

##将两个图放在一起
grid.arrange(plt, tbl,
             nrow=2,
             as.table=TRUE,
             heights=c(3,1))

tbl <- tableGrob(SummaryTable1, rows=NULL)

在这里插入图片描述
改变factor的levels的方法:
包:forcats
1.修改levels顺序的函数,向量内元素不变
fct_relevel 指定某个level移动到特定位置
fct_inorder 按照第一次出现的次序排列
fct_infreq 按照出现的频率排列
fct_reorder 和 fct_reorder2 作用在一个数据框中的一列factor上,他们的排序要依赖其他列的值
fct_shuffle 随机排序
fct_rev 倒序
fct_shift 实现前后移动,滚动变化

2.变换levels名称的函数
fct_anon 用有规律的数字表示
fct_collapse 对应指定更改,主要用于多个合并成一个
fct_recode 手动更改
fct_lump 将出现次数较少的设置为"other"
fct_other 将指定的 level 设置成"other"
fct_relabel 在原有基础上进行修改

3.其他函数
fct_c 将两个factor结合
fct_count 数每一个 level 的数量
fct_unique 让每一个level只有一个
fct_drop 去掉一些levels

(下面三个更一般的函数,上面这些函数都有着特定的功能,基本上都是调用下面这三个函数实现的)
lvls_reorder 更改level顺序
lvls_revalue 整体更改level名称
lvls_expand 增加一个level

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值