查看: 1467|回复: 8

气泡图成猫啦!变身之术拿捏!

[复制链接]

管理员

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

主题
1070
注册时间
2020.6.16
在线时间
548 小时

发表于 2022.11.26 09:53:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
气泡图、散点图想必大家都会画,今天内容主要是relax一下,把你的散点图/气泡图施加猫猫变身之术!实属给爱猫人士送福利了……
[AppleScript] 纯文本查看 复制代码
#相关R包安装和载入:
remotes::install_github("R-CoderDotCom/ggcats@main")
install.packages('Ecdat')
library(ggcats) #画猫的
library(ggplot2)
library(tidyverse)
library(Ecdat) #会用到一个数据集
library(gganimate) #制作动图的,使用可戳往期:《汇报一绝!让你的静态图表动起来!》



1. 如何调用猫猫

  1. #首先,该R包中包含15只可调用的猫咪,下面是它们的调用名:
  2. cat <- c("nyancat", "bongo", "colonel", "grumpy", "hipster",
  3. "lil_bub", "maru", "mouth", "pop", "pop_close",
  4. "pusheen", "pusheen_pc", "toast", "venus", "shironeko")
  5. #创建一个5*3的矩阵一探这15只猫咪容颜:
  6. grid <- expand.grid(1:5, 3:1)
  7. dt <- data.frame(x = grid[, 1],
  8. y = grid[, 2],
  9. z = grid[, 2]-0.4, #用于文字标签的坐标
  10. image = cat)
  11. head(dt)
复制代码

64c4fc4722a4a69e5e411ddfb159dc2f.png

  1. #ggplot2绘制:
  2. p <- ggplot(dt) +
  3. geom_cat(aes(x, y, cat = image), size = 5) + #使用geom_cat添加猫咪
  4. xlim(c(0.25, 5.5)) +
  5. ylim(c(0.25, 3.5)) +
  6. geom_text(aes(x = x,y = z, label = image))+
  7. theme_bw()
  8. p
复制代码

617a9b8aab32284eab05e418e2b63429.png

其实这15只不同模样的猫咪就等同于不同的散点类型,画图时选择喜欢的猫咪即可。

2. 猫咪气泡图绘制

  1. #读入本地丰度气泡图测试数据:
  2. df <- read.csv('bubble_test.csv',header = T)
  3. head(df)
复制代码

9c4688747f1cec5eba9eed40f6afa41a.png

  1. #先绘制常规丰度气泡图:
  2. mytheme <- theme_bw() +
  3. theme(axis.title.x = element_blank(),
  4. axis.title.y = element_blank(),
  5. axis.text.x = element_text(size = 12, angle = -45),
  6. axis.text.y = element_text(size = 10),
  7. legend.text = element_text(size = 10),
  8. legend.text.align = 0.5,
  9. legend.title = element_text(size = 12, hjust = 0))
  10. p1 <- ggplot(df, aes(x = cluster,y = interacting_pair)) +
  11. geom_point(aes(size = proportion, color = exp), shape = 16) + #圆形bubble
  12. scale_size(range = c(3, 10)) +
  13. scale_color_gradient(low = "#f5c6c6", high = "#cf0000") +
  14. mytheme
  15. p1
复制代码

f9b58f1ec80034f79238b54e89dd2372.png

  1. #下面绘制猫猫气泡图:
  2. ##用猫猫展示表达分布占比/或显著P值等数据:
  3. p2 <- ggplot(df) +
  4. geom_cat(aes(cluster, interacting_pair, size = proportion), cat = 'grumpy') +
  5. scale_size(range = c(0.5, 2.5)) +
  6. mytheme
  7. p2
复制代码

cdfc423b16ac177980d62b3efca49eb1.png

  1. ##用猫猫展示表达量/丰度等数据:
  2. p3 <- ggplot(df) +
  3. geom_cat(aes(cluster, interacting_pair, size = exp), cat = 'lil_bub') +
  4. scale_size(range = c(0.5, 3)) +
  5. mytheme
  6. p3
复制代码

f29ba9e1a425d9b0089420dcbbe2da0d.png

  1. #也可以同时用颜色表示表达量,猫猫表示分布占比/或P值等:
  2. p4 <- ggplot(df, aes(x = cluster,y = interacting_pair)) +
  3. geom_point(aes(color = exp), shape = 15, size = 14) +
  4. scale_color_gradient(low = "#fcc648", high = "#f76c80") +
  5. geom_cat(aes(size = proportion), cat = 'bongo') +
  6. scale_size(range = c(0.5, 2.5)) +
  7. mytheme
  8. p4
复制代码

3d1ed02838a030e8dcdff1bf86b91784.png

3. 猫咪动态折线图绘制

  1. #读取测试数据
  2. data(incomeInequality) #来自Ecdat包,美国家庭收入分位数;
  3. dat <-incomeInequality %>%
  4. select(Year, P99, median) %>%
  5. rename(income_median = median,
  6. income_99percent = P99) %>%
  7. pivot_longer(cols = starts_with("income"),
  8. names_to = "income",
  9. names_prefix = "income_")
  10. head(dat)
复制代码

b1c45d2b55089907b0deb3a1816d53a1.png

  1. #新增猫咪列和数据列对应:
  2. dat$cat <- rep(NA, 132)
  3. dat$cat[which(dat$income == "median")] <- "nyancat"
  4. dat$cat[which(dat$income == "99percent")] <- rep(c("pop_close", "pop"), 33)
  5. head(dat)
复制代码

ed8e8f5ab9edc63923202b55cb799fdf.png

  1. #先绘制折线图:
  2. p5 <- ggplot(dat, aes(x = Year, y = value, group = income, color = income)) +
  3. geom_line(size = 2) +
  4. mytheme
  5. p5
复制代码

dc9067f904b1bcef9c97ee8d5e2bea09.png

  1. #制作猫猫动态图:
  2. p6 <- ggplot(dat, aes(x = Year, y = value, group = income, color = income)) +
  3. geom_line(size = 2) +
  4. geom_cat(aes(cat = cat), size = 5) +
  5. mytheme +
  6. transition_reveal(Year)
  7. p6
  8. anim_save("ggcats.gif")
复制代码

dc3c8245ee6b5ad68470c09d0f73dc33.gif

有丢子搞笑……另外,这个R包作者似乎还有一个dog派的类似包,感兴趣可以自行去瞅两眼。

如果大家对使用gganimate包制作动态图感兴趣表,可戳往期:《汇报一绝!让你的静态图表动起来!》

好啦,我们今天的分享就到这里!

参考资料
https://github.com/R-CoderDotCom/ggcats


本文作者:基迪奥-喵酱

新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
50 小时

发表于 2022.11.26 11:03:32 | 显示全部楼层
11月的第十八天
新的一天加油!
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2019.7.28
在线时间
7 小时

发表于 2022.11.27 09:21:42 | 显示全部楼层

11月的第二十六天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
50 小时

发表于 2022.11.27 10:02:49 | 显示全部楼层
11月第十九天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
50 小时

发表于 2022.11.28 09:04:47 | 显示全部楼层
11月的第二十天
新的一天加油!
回复 支持 反对

使用道具 举报

功夫熊猫

Rank: 10Rank: 10Rank: 10

主题
32
注册时间
2016.1.8
在线时间
680 小时

发表于 2022.11.28 09:09:43 | 显示全部楼层
新的一天加油!
回复

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
50 小时

发表于 2022.11.29 09:40:16 | 显示全部楼层
11月第二十一天
新的一天加油!
回复 支持 反对

使用道具 举报

中华鲟

Rank: 5Rank: 5

主题
0
注册时间
2016.5.10
在线时间
50 小时

发表于 2022.11.30 09:49:22 | 显示全部楼层
11月最后一天
新的一天加油!
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
14
注册时间
2019.6.21
在线时间
149 小时

发表于 2022.12.1 09:29:41 | 显示全部楼层
距离2023年还有不到一个月的时间。。。。
新的一天加油!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表