使用ggtext为ggplot2坐标轴标签添加PNG logo报错该如何解决?
报错原因与解决方案
你遇到的三类报错分别对应三个可修复的问题:
1. 无法找到目标路径报错
Error in download.file(logos$logo[r], logos$path[r]): cannot open destfile 'images/netflix.png', reason 'No such file or directory'
这个错误是因为手动创建的images文件夹不在R当前工作目录下,可直接用代码自动创建文件夹,避免路径匹配错误,在下载循环前新增一行代码即可:
if(!dir.exists("images")) dir.create("images", recursive = TRUE)
2. PNG格式错误、curl证书校验失败报错
Error in png::readPNG(get_file(path), native = TRUE) : file is not in PNG format curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012)
这两类报错的原因分别是:
- Windows系统下默认下载文件时用文本模式写入,导致PNG二进制文件损坏
- 维基百科的HTTPS链接触发了本地SSL证书校验规则,无法正常下载
修改下载代码为以下内容即可解决:
# 配置下载参数,禁用SSL校验,使用二进制写入模式 options(download.file.method = "wininet", download.file.extra = "--no-check-certificate") for (r in 1:8) { download.file(logos$logo[r], logos$path[r], mode = "wb") }
3. 移除缺失值点的警告
Warning message: Removed 18 rows containing missing values (geom_point).
这个警告属于正常现象:你设置的隐藏点y值为-10,超出了你定义的y轴范围limits = c(0, 35),所以被自动移除,不影响最终图表效果。如果要消除警告,直接删除geom_point那行代码即可,你可以通过修改图例配置来实现圆形图例的效果,不需要额外添加隐藏点。
修改完成后再运行后续的x轴标签替换代码,即可正常生成带logo坐标轴的图表。
内容的提问来源于stack exchange,提问作者AnilGoyal
相关产品推荐
相关产品推荐

