梦寐以求的、可在ggplot2中添加狗狗元素的几何对象(geom)。该包属于趣味R包生态(memeverse)的部分,其源代码基于ggimage包中的geom_image函数开发。# install.packages("remotes")remotes::install_github("R-CoderDotCom/ggdogs@main")
目前提供25种狗狗样式可供选择:
"doge"(默认样式)、"doge_strong"(强壮版 doge)、"chihuahua"(吉娃娃)、"eyes"(狗狗眼睛)、"gabe"、"glasses"(戴眼镜的狗狗)、"tail"(狗狗尾巴)、"surprised"(惊讶的狗狗)、"thisisfine"(“一切安好” 梗图狗狗)、"hearing"(竖耳狗狗)、"pug"(哈巴狗)、"ears"(狗狗耳朵特写)、"husky"(哈士奇)、"husky_2"(另一只哈士奇)、"chilaquil"、"santa"(圣诞风狗狗)、"bryan"、"vinny"、"jake"、"lucy"、"puppie"(小狗)、"goofy"(高飞狗)、"snoopy"(史努比)、"scooby"(史酷比)、"suspicious"(可疑的狗狗)
# 1. 生成5×5的网格坐标数据(对应25种狗狗样式,5列5行)# 第一个参数1:5对应x轴坐标(1-5),第二个参数5:1对应y轴坐标(5-1)grid <- expand.grid(1:5, 5:1)# 2. 构建绘图所需的数据框df <- data.frame( x = grid[, 1], # 提取网格数据的第一列作为x轴坐标 y = grid[, 2], # 提取网格数据的第二列作为y轴坐标 # 构建25种狗狗样式的名称向量,与5×5网格一一对应 image = c("doge", "doge_strong", "chihuahua", "eyes", "gabe", "glasses", "tail", "surprised", "thisisfine", "hearing", "pug", "ears", "husky", "husky_2", "chilaquil", "santa", "bryan", "vinny", "jake", "lucy", "puppie", "goofy", "snoopy", "scooby", "suspicious"))# 3. 加载必需的R包library(ggplot2) # 加载核心绘图包ggplot2,用于构建图表框架library(ggdogs) # 加载ggdogs包,用于在图表中添加狗狗元素# 4. 绘制5×5网格狗狗图(带样式标签,纯白背景)ggplot(df) + # 添加狗狗元素:映射x/y坐标,指定狗狗样式为image列,设置狗狗大小为3 geom_dog(aes(x, y, dog = image), size = 3) + # 添加狗狗样式名称标签:标签在狗狗下方0.25个单位(避免重叠),映射标签内容为image列,设置标签字体大小为4 geom_label(aes(x, y - 0.25, label = image), size = 4) + # 调整x轴范围,避免左右两侧的狗狗/标签被裁剪 xlim(c(0.25, 5.5)) + # 调整y轴范围,避免上下两侧的狗狗/标签被裁剪 ylim(c(0.25, 5.5)) + # 自定义图表主题(设置纯白背景,隐藏网格线) theme( panel.background = element_rect(fill ="white"), # 绘图区域(坐标轴内)背景设为纯白色 plot.background = element_rect(fill ="white"), # 整个图表画布(坐标轴外)背景设为纯白色 panel.grid = element_blank() # 隐藏默认灰色网格线,让纯白背景更整洁 )# 5. 保存绘制完成的图表为PDF文件ggsave( filename ="dog_grid.pdf", # 保存的文件名(PDF格式) plot = last_plot(), # 保存最近一次绘制的图表 width = 6, # 图表宽度(英寸) height = 6, # 图表高度(英寸),设置为正方形与5×5网格匹配 device ="pdf", # 保存文件格式为PDF bg="transparent" # 保存时背景设为透明(因图表本身已设为纯白,最终仍为纯白效果))
🍀 基于mtcars数据,绘制固定样式狗狗(doge_strong)ggplot(mtcars) + geom_dog(aes(mpg, wt), dog = "doge_strong", size = 5)+ # 调整y轴范围,避免猫咪被裁剪 theme( panel.background = element_rect(fill ="white"), # 绘图面板背景设为纯白色 plot.background = element_rect(fill ="white"), # 整个图表画布背景设为纯白色 panel.grid = element_blank() # 隐藏网格线(可选,让纯白背景更干净) )ggsave( filename ="doge_strong.pdf", plot = last_plot(), # 保存最后绘制的图表 width = 4, height = 3, device ="pdf", bg="transparent" # 保存时保留透明背景)
🍀 基于mtcars数据,狗狗大小随cyl(气缸数)变化ggplot(mtcars) + geom_dog(aes(mpg, wt, size = cyl), dog = "husky")+ # 调整y轴范围,避免猫咪被裁剪 theme( panel.background = element_rect(fill ="white"), # 绘图面板背景设为纯白色 plot.background = element_rect(fill ="white"), # 整个图表画布背景设为纯白色 panel.grid = element_blank() # 隐藏网格线(可选,让纯白背景更干净) )ggsave( filename ="husky.pdf", plot = last_plot(), # 保存最后绘制的图表 width = 4, height = 3, device ="pdf", bg="transparent" # 保存时保留透明背景)
🐎马上有福🧧
1年系统教学,实打实包教包会限50人,全年无休1对1答疑
含书籍、代码、数据等完整资料包
https://github.com/R-CoderDotCom/ggdogs