#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
本文介绍如何使用R语言的ggplot2等库进行数据可视化,包括条形图的绘制、误差线的添加及与表格数据的组合展示。同时,讲解了如何利用forcats包调整因子级别,实现图表元素的有序排列。

1443

被折叠的 条评论
为什么被折叠?



