首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >答读者问:R语言ggplot2散点图实现用箭头两两配对

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

作者头像
用户7010445
发布2021-07-30 10:40:26
发布2021-07-30 10:40:26
6150
举报

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

首先是准备示例数据

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

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

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

还有一个配对分组文件

接下来先做散点图
代码语言:javascript
复制
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()
接下来是构造画箭头的数据
代码语言:javascript
复制
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)
最终的结果图
代码语言:javascript
复制
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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 首先是准备示例数据
  • 接下来先做散点图
  • 接下来是构造画箭头的数据
  • 最终的结果图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档