前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >科研文献绘图

科研文献绘图

作者头像
生信喵实验柴
发布2022-10-25 20:00:12
9430
发布2022-10-25 20:00:12
举报
文章被收录于专栏:生信喵实验柴生信喵实验柴

一、文字云图

代码语言: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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信喵实验柴 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档