1. > 电脑手机 >

r语言绘制条形图 r语言绘制条形图的命令

lot 11.nclass12.warn.unused总结前言关于 R语言 的 绘图 教程满天飞,随便一搜一大堆,做这个系列一方面我想打好基本功,另一方面,方便大家学习,整个系列可能不会有耳目一新的感觉 > barplot(d) #所有参数默认 > ?barplot 常见参数就不赘述了,几个个人认为比较重要参数如下 names.arg----在每个条形图或条形图下绘制的名称向量。 如果省略此参数,那么如果它是向量,则从height的names属性中获取名称;如果它是矩阵,则从列名称中获取名称。 legend.text----数据为矩阵的时候用,如果legend.text为true,则height的行名称非空时将用作标签。 horiz----默认false,为竖直条形图,改为TRUE,为水平条形图 beside---如果为FALSE,则将高度列描绘为堆叠的条,如果为TRUE,则将列描绘为并列的条 space---每根柱子之前留出的空间量(以平均柱子宽度的一部分为单位)。 可以以单个数字或每个小节一个数字的形式给出。 如果height是一个矩阵,并且next为TRUE,则可以用两个数字指定空间,其中第一个是同一组中的条形之间的间隔,第二个是组之间的间隔。 如果未明确给出,则如果height为矩阵,并且next为TRUE,则默认为c(0,1),否则为0.2。 还有很多参数可以通过help()查询 > barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = TRUE,horiz = TRUE,col = rep(c('blue','green','gray'),3),legend.text = TRUE) > barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = TRUE,col = rep(c('blue','green'),2),legend.text = TRUE) > barplot(a,names.arg = c('1','2','3','4','5','6','7','8','9'),beside = F,horiz = F,col = rep(c('blue','green'),2),legend.text = TRUE) 2.ggplot2包 安装加载包 install.package('ggplot2') library(ggplot2) #创建矩阵 data<-data.frame(Sample<-c(rep('control1',3),rep('control2',3),rep('control3',3),rep('treat1',3),rep('treat2',3),rep('treat3',3),rep('treat4',3)), contion<-rep(c('Cell','Tissue','Organ'),7), value<-c(503,264,148,299,268,98,363,289,208,108,424,353,1,495,168,152,367,146,48,596,143))

colnames(data)=c('sample',"contion","value")

ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='fill') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1)) #ggplot函数,geom从数据到几何图像,geom_bar为柱状图,geom_line为线型图等,aes形成映射,x轴为sample,y轴为value,堆叠为contion,geom_bar()函数为建立柱状图,stat参数-统计变换,position参数为柱状图形式,position= 'fill'(图形元素堆叠且高度标准化为1),position= 'stack'(图形堆叠图),参数position= 'dodge'(并列数据,非堆叠展示),coord画图在某个坐标系中,facet将绘图窗口分成若干子窗口用来生成数据中不同子集的图形 # labs为标题,theme为设置标题参数,axis.title为轴标题信息,axis.text为轴注释文本,axis.text.x表示设置x轴的信息,还有更多参数详查ggplot2包 ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='fill') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1))+coord_flip() #加的函数可实现水平柱状图展示 ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='stack') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1)) ggplot(data,mapping = aes(Sample,value,fill=contion))+geom_bar(stat='identity',position='dodge') +labs(x = 'Sample',y = 'frequnency') +theme(axis.title =element_text(size = 16),axis.text =element_text(size = 14, color = 'black'))+theme(axis.text.x = element_text(angle = 45, hjust = 1)) 因为我们在绘制误差线时需要用到每个柱子的大小,所以在这里,我们先对数据进行了汇总,然后使用 geom_col 绘制条形图。 3.4 添加标注 有时候,我们可能想知道条形图的每个柱子的具体数值或占比情况,需要为每个柱子添加文本注释信息 mpg %>% group_by(class, drv) %>% summarise(count = n()) %>% ggplot(aes(class, count)) + geom_col(aes(fill=drv), position = position_dodge2(preserve = 'single')) + geom_text(aes(label=count), position = position_dodge2(width = 0.9, preserve = 'single'), vjust = -0.2, hjust = 0.5) 我们使用 geom_text 添加标签注释,有几点需要注意 堆叠的例子 mpg %>% group_by(class, drv) %>% summarise(count = n()) %>% mutate(cumcount = cumsum(count)) %>% ggplot(aes(class, count)) + geom_col(aes(fill=drv), position = position_stack(reverse = TRUE)) + geom_text(aes(label = cumcount), position = position_stack(), # 可以不设置该参数 vjust = 0.5, hjust=0.5) 我们看到,标签都是放置在上面,那我想要把标签放中间怎么办? mpg %>% group_by(class, drv) %>% summarise(count = n()) %>% mutate(cumcount = cumsum(count), midcount = cumcount - count/2) %>% ggplot(aes(class, count)) + geom_col(aes(fill = drv), position = position_stack(reverse = TRUE)) + geom_text(aes(y = midcount, label = cumcount), hjust=0.5) 注意,我们不再为 geom_text 的 position 参数设置值,因为不需要根据 y 的值进行堆叠 4. 条形图的变形 4.1 金字塔图 df <- tibble( gene = factor(paste0("gene_", rep(1:16, 2)), levels = paste0("gene_", 16:1)), stat = c(seq(-10, -100, -10), seq(-90, -40, 10), seq(10, 100, 10), seq(90, 40, -10)), direct = rep(c("down", "up"), each=16))ggplot(df, aes(gene, stat, fill = direct)) + geom_col() + coord_flip() + scale_y_continuous(breaks = seq(-100, 100, 20), labels = c(seq(100, 0, -20), seq(20, 100, 20))) 4.2 偏差图 df <- tibble( gene = factor(paste0("gene_", 1:20), levels = paste0("gene_", 20:1)), stat = c(seq(100, 10, -10), seq(-10, -100, -10)), direct = factor(rep(c("up", "down"), each=10), levels = c("up", "down")))ggplot(df, aes(gene, stat, fill = direct)) + geom_col() + coord_flip() legend = TRUE, col = c ( "blue" , "green" ) , family = 'SyHei' ) # 去掉字体 showtext_end ( ) ; 以下代码会在当前程序目录下生存一个 runoob-bar-3.png 文件,如下所示:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, website.service08@gmail.com 举报,一经查实,本站将立刻删除。

联系我们

工作日:9:30-18:30,节假日休息