前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ggplot2优雅的自定义绘制圈图

ggplot2优雅的自定义绘制圈图

作者头像
R语言数据分析指南
发布2023-08-18 13:54:05
3590
发布2023-08-18 13:54:05
举报

欢迎关注R语言数据分析指南

❝本节来介绍如何使用packcircles来计算圆圈大小通过ggplot2来绘制圈图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,添加了详细的注释希望各位观众老爷能够喜欢 ❞

加载R包

代码语言:javascript
复制
library(tidyverse)
# install.packages("packcircles") # 如果没有安装packcircles包,可以先安装
library(packcircles)
library(geomtextpath)
library(ggpattern)

导入数据

代码语言:javascript
复制
languages <- read_tsv("data.xls")

数据清洗

代码语言:javascript
复制
df_raw <- languages %>% arrange(desc(github_language_repos)) %>% 
  slice(1:5)

整合数据

代码语言:javascript
复制
# 利用packcircles包进行圆圈布局,根据github_language_repos的值计算圆圈大小,并对圆圈半径进行调整
pack <- circleProgressiveLayout(df_raw$github_language_repos, sizetype = "area") %>% 
  mutate(radius = radius - 100)

# 将圆圈布局的结果与原始数据合并,并为每个圆圈指定一个id
df_plot <- cbind(df_raw, pack) %>% mutate(id = 1:5)

# 利用circleLayoutVertices函数生成每个圆圈上的点的坐标信息
df <- circleLayoutVertices(pack, npoints = 50)

# 为每个圆圈指定一个title,用于绘制文字标签
df$title <- df_plot$title[match(df$id, df_plot$id)]

数据可视化

代码语言:javascript
复制
ggplot() +
  # 利用geom_textpath绘制围绕圆圈的文字标签
  geom_textpath(data = df, aes(x, y, label = title), hjust = "ymax",size = 4.5) +
  # 利用geom_text绘制圆圈内的文字标签,数字使用逗号分隔方便阅读
  geom_text(data = df_plot, aes(x , y, label = scales::comma(github_language_repos)),size = 3) +
  coord_equal() + # 设置坐标轴等比例
  theme_void() + # 设置空白主题,即无背景和坐标轴
  scale_pattern_filename_discrete(choices = image) + # 设置图案的选择
  theme(legend.position = "none", # 隐藏图例
        plot.margin = unit(c(1,1, 1, 1), "cm")) # 设置图形的边距
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 加载R包
  • 导入数据
  • 数据清洗
  • 整合数据
  • 数据可视化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档