RMarkdown knit为PDF时alpha函数报错,如何用base R实现直方图透明叠加
报错原因
alpha()不是base R的原生函数,它来自scales等第三方扩展包。你交互式运行代码时工作环境已经提前加载了对应包,所以可以正常运行;但knit生成PDF时R会启动独立的干净会话,未加载对应包就会触发找不到函数的报错。
原生解决方案
直接使用base R内置的adjustcolor()函数实现透明度调整,该函数属于默认加载的grDevices包,无需额外安装加载任何第三方包,完美适配PDF导出场景。
你只需要将代码中调用alpha()的部分替换为adjustcolor()即可,修改后可直接正常knit的完整代码如下:
a = rnorm(100, 1) b = rnorm(100, 3) h1 = hist(a, plot = F) h1$density = h1$counts/sum(h1$counts) h2 = hist(b, plot = F) h2$density = h2$counts/sum(h2$counts) { plot(h1 , freq=F , col=adjustcolor('green', alpha.f = 0.5) , xlim=c(-3, 7) , ylim=c(0,0.35) , ylab='Proportion' , xlab="" , main="" ) plot(h2 , freq=F , col=adjustcolor('blue', alpha.f = 0.5) , xlim=c(-3, 7) , ylim=c(0,0.35) , ylab='Proportion' , add=T) }
可选替代方案(非原生)
如果你仍想使用alpha()函数,只需在代码块开头显式加载scales包即可,注意要确保你的环境已经安装该包:
library(scales) # 后续原有代码不变
内容的提问来源于stack exchange,提问作者ben_aaron
相关产品推荐
相关产品推荐

