这个是公众号读者留言问到的问题,今天的推文介绍一下我想到的实现办法
首先是准备示例数据
处理前的示例数据如下总共四列
- x,y是散点的位置坐标
- node是给散点起得名字
- group表示分组
处理后的示例数据也是一样的
image.png还有一个配对分组文件
image.png接下来先做散点图
library(ggplot2)
library(readxl)
library(dplyr)
library(ggstar)
df1<-read_excel("practice/example.xlsx",sheet = "Sheet1")
df2<-read_excel("practice/example.xlsx",sheet = "Sheet2")
df1
df2
df<-rbind(df1,df2)
df
ggplot()+
geom_star(data=df,aes(x=x,y=y,
starshape=group,
fill=group),
size=5)+
theme_bw()
image.png
接下来是构造画箭头的数据
df3<-read_excel("practice/example.xlsx",sheet = "Sheet3")
df3
merge(df,df3,by.x = "node",by.y = "start") %>%
select(x,y) %>%
rename("xstart"="x",
"ystart"="y") -> df1.1
merge(df,df3,by.x = "node",by.y = "end" )%>%
select(x,y) %>%
rename("xend"="x",
"yend"="y") -> df2.1
df2.1
df1.1
df.1<-cbind(df1.1,df2.1)
最终的结果图
ggplot()+
geom_star(data=df,aes(x=x,y=y,
starshape=group,
fill=group),
size=5)+
theme_bw()+
geom_segment(data=df.1,aes(x=xstart+0.05,y=ystart,
xend=xend-0.05,yend=yend),
arrow = arrow(length=unit(0.5, "cm")),
lineend = "round",
linejoin = "round",
size=3)
image.png
今天的示例数据和代码还是放到 次条推文的留言区
欢迎大家关注我的公众号
小明的数据分析笔记本
小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!
网友评论