科研文献绘图

2022-10-25 20:00:12 浏览数 (3)

一、文字云图

代码语言:javascript复制
library(Rwordseg)
library(wordcloud2)

#读入文件
x <- readLines("zfgz.txt",encoding = 'UTF-8',)
head(x)
#开始分词,可以使用system.time()函数计时
y <- segmentCN(strwords = x,analyzer = "hmm",returnType = "vector")
#查看数据是否乱码
y[1:3]
#system.time(y <- segmentCN(strwords = x,analyzer = "hmm",returnType = "vector"))
#拆分列表为向量
y <- unlist(y)
#过滤数字
y <- y[!grepl('[0-9]',y)]
#过滤空白以及单个词
y <- y[nchar(y)>=2]
#统计频数
table(y)
#排序获得前50个关键字
top50 <- sort(table(y),decreasing = TRUE)[1:50]
top50
#绘图
wordcloud2(top50)
#修改形状和配色
wordcloud2(top50,shape = "star",color = rep_len(c("red","darkred"),length(top50)))
wordcloud2(top50,shape = "circle")
wordcloud2(top50,shape = "circos")
wordcloud2(top50,shape = "R")

文字云图

二、相关性图

代码语言:javascript复制
library(corrplot)
corrplot(as.matrix(mtcars),is.corr = F)
corrplot(as.matrix(mtcars),is.corr = F,type = 'upper')
corrplot(as.matrix(mtcars),is.corr = F,type = 'upper',method = 'pie')

M <- cor(mtcars)
M
corrplot(M)
# method = c("circle", "square", "ellipse", "number", "shade", "color", "pie"),
corrplot(M,method = "ellipse")
corrplot(M,method = "shade")
corrplot(M,method = "color")
corrplot(M,method = "shade")
corrplot(M,method = "circle")
corrplot(M,method = "pie",type = "upper")
corrplot(M,method = "circle",type = "lower")
corrplot(M, order = "AOE", type = "upper", tl.pos = "d")

相关性图

三、曼哈顿图

曼哈顿图(manhattan plot),是一种类似曼哈顿摩天大楼排列的一种展示图。如下图所示。

美国纽约曼哈顿区。manhattan 图即模拟曼哈顿高低起伏的摩天大楼而成,类似一种条形图。在生物和统计学上,做频率统计、突变分布、GWAS 关联分析的时候,经常需要绘制manhattan 图,用来展示每条染色体上 SNP 的分布及频率变化,能够对候选位点的分布和数值一目了然。在 R 中,可以利用 qqman 包来绘制 Manhattan 图,Plink 软件的输出结果可以直接作为输入数据进行绘图。

代码语言:javascript复制
library(qqman)  
library(RColorBrewer)  
str(gwasResults)  
head(gwasResults)  
dim(gwasResults)
manhattan(gwasResults)  
manhattan(gwasResults,col=c('red','green'))  
manhattan(gwasResults,col=brewer.pal(3,'Set1'),genomewideline=6)  
manhattan(gwasResults,col=brewer.pal(3,'Set1'),genomewideline=6,suggestiveline = 3)  
manhattan(gwasResults,col=brewer.pal(3,'Blues'),genomewideline=6,suggestiveline = 3,
          highlight = snpsOfInterest,annotatePval = 0.001)

曼哈顿图

代码语言:javascript复制
manhattan(gwasResults, annotatePval = 0.001, annotateTop = FALSE)

四、树形图

代码语言:javascript复制
library(factoextra)
dd <- dist(mtcars,method = "euclidean")
dd
hc <- hclust(dd,method = "ward.D2")
plot(hc)
fviz_dend(hc)
fviz_dend(hc,k=4)
fviz_dend(hc,k=4,cex = 0.8,k_colors = rainbow(4))
fviz_dend(hc,k=4,cex = 0.8,k_colors = rainbow(4),color_labels_by_k = FALSE,rect_border = rainbow(4))

fviz_dend(hc,k=4,horiz = TRUE,type = c("circular"))
fviz_dend(hc,k=4,horiz = TRUE,type = c("rectangle"))
fviz_dend(hc,k=4,horiz = TRUE,type = c("phylogenic"))

树形图

五、和弦图

和弦图(chord Diagram),是一种显示矩阵中数据间相互关系的可视化方法,节点数据沿圆周径向排列,节点之间使用带权重(有宽度)的弧线链接。和弦图是表示数据之间相互关系的图形方法。节点围绕着圆周分布,点与点之间以弧线彼此连接以显示当中关系,通过每个圆弧的大小比例给每个连接分配数值。此外,还可以通过颜色将数据分类,直观地进行比较和区分。

之前的“基因组圈图”也是一种和弦图,用来展示基因组之间相互关系。

和弦图的输入数据非常简单,主要是一种关联,最简单的分为三列。source 字段、target字段、和 value 字段,也就是从哪里到哪里,然后就是数值。source 和 target 确定连接关系,为字符型,value 确定关系大小,展示连接关系大小。

更复杂的和弦图可以使用 Circos 软件绘制。

代码语言:javascript复制
library(circlize)
library(RColorBrewer)
help(package="circlize")
set.seed(999)
mat<-matrix(sample(18, 18), 3, 6)
rownames(mat) <- paste0("S", 1:3)
colnames(mat) <- paste0("E", 1:6)
df<- data.frame(from = rep(rownames(mat), times = ncol(mat)),
                to = rep(colnames(mat), each = nrow(mat)),
                value = as.vector(mat),
                stringsAsFactors = FALSE)
#长数据
chordDiagram(df,grid.col = brewer.pal(9,"Set1")[1:9],link.border="gray")
circos.clear()

#宽数据
chordDiagram(mat,grid.col = brewer.pal(9,"Set1")[1:9],link.border="grey")
circos.clear()

圈图

六、地图

代码语言:javascript复制
library(maps)
library(mapdata)
library(ggplot2)

world_map <- map_data("world")
#查看全部区域
world_map$region
unique(world_map$region)
sort(unique(world_map$region))
#获取某一地区地图数据
states_map <- map_data("state")
#绘制地图,使用geom_polygon()或者geom_path(),再加上地图投影
ggplot(states_map,aes(x=long,y=lat,group=group)) geom_polygon(fill="white",color="black") 
  coord_map("mercator")

ggplot(states_map,aes(x=long,y=lat,group=group)) geom_path() coord_map("mercator")

#数据映射到地图
crimes <- data.frame(state=tolower(rownames(USArrests)),USArrests)
crimes
states_map <- map_data(map="state")
crime_map <- merge(states_map,crimes,by.x = "region",by.y = "state")
library(dplyr)
dplyr::arrange(crime_map,group,order)
crime_map <-  dplyr::arrange(crime_map,group,order)
ggplot(crime_map,aes(x=long,y=lat,group=group,fill=Murder)) geom_polygon(color="black") 
  scale_fill_gradient(low = 'cyan',high = 'red')  
  coord_map("mercator")

美国谋杀率地图

代码语言:javascript复制
#绘制中国地图
china <- world_map[world_map$region=="China",]
ggplot(china,aes(x=long,y=lat,group=group)) geom_polygon(fill="white",color="black")
head(china)
china <- subset(x = world_map,subset = region==c("China","Taiwan"))
china
ggplot(china,aes(x=long,y=lat,group=group)) geom_polygon(fill="red",color="black")

中国地图

代码语言:javascript复制
#mapdata包中的worldHires提供高分辨率地图数据
library(mapdata)
map('worldHires', col=1:10)
map('worldHires', 'China')
map_data(map = "china")
china <- map_data(map = "china")
ggplot(china,aes(x=long,y=lat,group=group,fill=region)) geom_polygon(color="black")
# m_polygon(color="black")
ggplot(china,aes(x=long,y=lat,group=group)) geom_polygon()
ggplot(china,aes(x=long,y=lat,group=group)) geom_polygon(fill="red") coord_map("mercator")

高分辨率中国地图

写在最后:有时间我们会努力更新的。大家互动交流可以前去论坛,地址在下面,复制去浏览器即可访问,弥补下公众号没有留言功能的缺憾。

代码语言:javascript复制
bioinfoer.com

有些板块也可以预设为大家日常趣事的分享等,欢迎大家来提建议。

1 人点赞