R绘图 | 包含/比例关系环图

简介: R绘图 | 包含/比例关系环图

circle_inner

整个新系列。目前的几个系列, 「#R实战」  以「生信分析」为主, 「#跟着CNS学作图」「复现顶刊」Figure为主,而本系列 「#R绘图」 则是学习不在文章中但同样很好看的图,致力于给同学们在数据可视化中提供新的思路和方法。

本系列往期文章

  1. R绘图 | 气泡散点图+拟合曲线
  2. R绘图 | 对比条形图+连线
  3. R绘图 | 一幅小提琴图的美化之旅
  4. R绘图 | 山峦图(ggridges)
  5. R绘图 | 哑铃图+区域放大
  6. R绘图 | 描述性统计常用图(散点图+柱状图+饼图)
  7. R绘图 | 圆角堆叠柱状图(ggchicklet )
  8. R绘图 | 时间线热图
  9. R绘图 | 堆叠柱状图
  10. R绘图 | 云雨图+双向条形图

本期图片

image-20221202003722770

这图怎么说呢,看着很简单,确实也很简单。不考虑比例关系在PPT里就可以做。本文主要提供了在R中绘制的思路,也让圆圈的比例更加精确,当然出现更多数据时,画的也更方便。

绘制

library(tidyverse)
mobile_bytes <- read.csv('mobile_bytes.csv')
head(mobile_bytes)

看一下数据结构就知道了,本质还是散点图。将数据自己的即可。

> head(mobile_bytes)
     measure       date percentile   value year     name     x
1 bytesTotal 2022_10_01        p50 2010.05 2022 p50_2022  0.45
2 bytesTotal 2022_10_01        p90 8195.38 2022 p90_2022  1.00
3 bytesTotal 2018_10_01        p50 1273.32 2018 p50_2018 -0.57
4 bytesTotal 2018_10_01        p90 5126.38 2018 p90_2018 -1.00
                    label x_label
1 Peso\nmediano:\n2010 KB    0.45
2  Percentil 90:\n8195 KB    1.40
3 Peso\nmediano:\n1273 KB   -0.57
4  Percentil 90:\n5126 KB   -1.30
mobile_bytes$year <- as.factor(mobile_bytes$year)
str(mobile_bytes)
ggplot() +
  geom_point(aes(x = x, size = value, color = year), y = 0, alpha = 0.5,
             data = filter(mobile_bytes, percentile == "p90")) +
  geom_point(aes(x = x, size = value, color = year), y = 0,
             data = filter(mobile_bytes, percentile == "p50")) +
  geom_text(aes(x = x_label, label = label), y = 0.4, size = 2.5,
            data = filter(mobile_bytes, percentile == "p90")) +
  geom_text(aes(x = x_label, label = label), y = 0, size = 2.5,
            data = filter(mobile_bytes, percentile == "p50")) +
  annotate("text", x = -1, y = 1.3, label = "Octubre 2018",  size = 3.5) + 
  annotate("text", x = 1, y = 1.3, label = "Octubre 2022",  size = 3.5) +
  labs(
    x = NULL,
    y = NULL
  ) +
  scale_color_manual(
    values = c("#1b998b", "#fb6107")
  ) +
  scale_x_continuous(limits = c(-2, 2)) +
  scale_y_continuous(limits = c(-1.0, 1.4)) +
  scale_size_area(max_size = 82) +
  coord_equal() +
  theme(
    panel.background = element_blank(),
    panel.grid = element_blank(),
    axis.ticks = element_blank(),
    axis.text = element_blank(),
    legend.position = "none"
  )
# Export plot
ggsave("plot_circle.pdf", 
       width =1500, 
       height = 1200, 
       units = "px")

result

参考

相关文章
|
前端开发 Shell 芯片
【芯片前端】保持代码手感——跨异步DMUX
【芯片前端】保持代码手感——跨异步DMUX
248 0
|
存储 人工智能 算法
详细设计工具之盒图(N-S图)
详细设计工具之盒图(N-S图)
2339 0
详细设计工具之盒图(N-S图)
|
数据可视化 定位技术 Python
【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码
【100天精通Python】Day68:Python可视化_Matplotlib 绘制热力图,示例+代码
2793 0
|
6月前
|
机器学习/深度学习 人工智能 算法
RAGEN:RL训练LLM推理新范式!开源强化学习框架让Agent学会多轮决策
RAGEN是一个基于StarPO框架的开源强化学习系统,通过马尔可夫决策过程形式化Agent与环境的交互,支持PPO、GRPO等多种优化算法,显著提升多轮推理训练的稳定性。
563 5
RAGEN:RL训练LLM推理新范式!开源强化学习框架让Agent学会多轮决策
|
数据处理
R语言数据合并:掌握`merge`与`dplyr`中`join`的巧妙技巧
【8月更文挑战第29天】如果你已经在使用`dplyr`进行数据处理,那么推荐使用`dplyr::join`进行数据合并,因为它与`dplyr`的其他函数(如`filter()`、`select()`、`mutate()`等)无缝集成,能够提供更加流畅和一致的数据处理体验。如果你的代码中尚未使用`dplyr`,但想要尝试,那么`dplyr::join`将是一个很好的起点。
|
传感器 人工智能 自动驾驶
智慧城市中的智能交通系统:缓解拥堵与提升出行效率
【9月更文挑战第16天】随着城市化进程加快,交通拥堵和污染等问题日益严重,成为制约城市发展的瓶颈。为此,智慧城市应运而生,其中智能交通系统(Intelligent Traffic System, ITS)作为核心部分,正逐渐成为缓解交通拥堵、提升出行效率的关键力量。本文将探讨智能交通系统如何通过信号优化、智能导航及公交调度等策略,结合实时路况监测与自动驾驶技术,为城市交通带来革命性变革。未来,随着技术进步和政策支持,智能交通系统将进一步智能化并与智慧城市其他系统深度融合,共同推动城市的可持续发展。
1521 17
|
12月前
|
机器学习/深度学习 人工智能 算法
基于YOLOv8的人员跌倒实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
本文介绍了基于YOLOv8算法的人员跌倒实时检测系统,通过4978张图片训练出有效模型,并开发了带GUI界面的系统,支持图片、视频和摄像头实时检测,具备更换背景、标题,调节检测置信度等功能。
1755 0
基于YOLOv8的人员跌倒实时检测系统【训练和系统源码+Pyside6+数据集+包运行】
|
SQL 存储 关系型数据库
|
Python
python使用tkinter库,封装操作excel为GUI程序
python使用tkinter库,封装操作excel为GUI程序
520 0
|
数据采集 自然语言处理 搜索推荐
Python实现基于LDA主题模型进行电商产品评论数据情感分析
Python实现基于LDA主题模型进行电商产品评论数据情感分析