美文网首页画图
答读者问:R语言ggplot2散点图实现用箭头两两配对

答读者问:R语言ggplot2散点图实现用箭头两两配对

作者: 小明的数据分析笔记本 | 来源:发表于2021-07-08 17:07 被阅读0次
image.png image.png

这个是公众号读者留言问到的问题,今天的推文介绍一下我想到的实现办法

首先是准备示例数据

处理前的示例数据如下总共四列

  • x,y是散点的位置坐标
  • node是给散点起得名字
  • group表示分组
image.png

处理后的示例数据也是一样的

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、生物信息学入门学习资料及自己的学习笔记!

相关文章

网友评论

    本文标题:答读者问:R语言ggplot2散点图实现用箭头两两配对

    本文链接:https://www.haomeiwen.com/subject/uudtpltx.html