当前位置:首页>java>「编程虚拟狗」忠犬八公R包ggdogs在ggplot2图中放狗

「编程虚拟狗」忠犬八公R包ggdogs在ggplot2图中放狗

  • 2026-10-05 19:58:29
「编程虚拟狗」忠犬八公R包ggdogs在ggplot2图中放狗
梦寐以求的、可在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"(可疑的狗狗)

部分示例
🍀 绘制网格分布的25种狗🐶
# 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

最新文章

随机文章