分享

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

 weipijieli 2022-11-26 发布于广西
气泡图、散点图想必大家都会画,今天内容主要是relax一下,把你的散点图/气泡图施加猫猫变身之术!实属给爱猫人士送福利了……

#相关R包安装和载入:
remotes::install_github('R-CoderDotCom/ggcats@main')
install.packages('Ecdat')
library(ggcats) #画猫的
library(ggplot2)
library(tidyverse)
library(Ecdat) #会用到一个数据集
library(gganimate) #制作动图的,使用可戳往期:《汇报一绝!让你的静态图表动起来!》

1. 如何调用猫猫

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

#ggplot2绘制:
p <- ggplot(dt) +
geom_cat(aes(x, y, cat = image), size = 5) + #使用geom_cat添加猫咪
xlim(c(0.25, 5.5)) +
ylim(c(0.25, 3.5)) +
geom_text(aes(x = x,y = z, label = image))+
theme_bw()
p

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

2. 猫咪气泡图绘制


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

#先绘制常规丰度气泡图:
mytheme <- theme_bw() +
theme(axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.x = element_text(size = 12, angle = -45),
axis.text.y = element_text(size = 10),
legend.text = element_text(size = 10),
legend.text.align = 0.5,
legend.title = element_text(size = 12, hjust = 0))
p1 <- ggplot(df, aes(x = cluster,y = interacting_pair)) +
geom_point(aes(size = proportion, color = exp), shape = 16) + #圆形bubble
scale_size(range = c(3, 10)) +
scale_color_gradient(low = '#f5c6c6', high = '#cf0000') +
mytheme
p1

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

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

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

3. 猫咪动态折线图绘制

#读取测试数据
data(incomeInequality) #来自Ecdat包,美国家庭收入分位数;
dat <-incomeInequality %>%
select(Year, P99, median) %>%
rename(income_median = median,
income_99percent = P99) %>%
pivot_longer(cols = starts_with('income'),
names_to = 'income',
names_prefix = 'income_')
head(dat)

#新增猫咪列和数据列对应:
dat$cat <- rep(NA, 132)
dat$cat[which(dat$income == 'median')] <- 'nyancat'
dat$cat[which(dat$income == '99percent')] <- rep(c('pop_close', 'pop'), 33)
head(dat)

#先绘制折线图:
p5 <- ggplot(dat, aes(x = Year, y = value, group = income, color = income)) +
geom_line(size = 2) +
mytheme
p5

#制作猫猫动态图:
p6 <- ggplot(dat, aes(x = Year, y = value, group = income, color = income)) +
geom_line(size = 2) +
geom_cat(aes(cat = cat), size = 5) +
mytheme +
transition_reveal(Year)
p6
anim_save('ggcats.gif')

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多