RStudio的半透明度

mso*_*ain 11 pdf r alpha-transparency ggplot2 rstudio

我正在尝试在回归线周围创建一个半透明置信区域:

library(car)
library(ggplot2)
library(effects)

mod <- lm(salary~yrs.service+sex, data=Salaries)

yrseff <- as.data.frame(allEffects(mod)[[1]])

ggplot(yrseff, aes(x=yrs.service, y=fit))+
geom_ribbon(aes(ymin=lower, ymax=upper), alpha=.2)+
geom_line(colour="darkgreen", size=2)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

警告消息:在grid.Call.graphics(L_polygon,x $ x,x $ y,index)中:此设备不支持半透明:每页仅报告一次

但是,如果我首先打开一个pdf设备(如下面的代码所示),它会创建一个带有半透明功能区的pdf文件.

pdf()
ggplot(yrseff, aes(x=yrs.service, y=fit))+
geom_ribbon(aes(ymin=lower, ymax=upper), alpha=.2)+
geom_line(colour="darkgreen", size=2)
dev.off()
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?有没有办法获得半透明度而无需保存为pdf?

我在Ubuntu 12.04上使用RStudio,这是我的会话信息.

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: i686-pc-linux-gnu (32-bit)

locale:
[1] LC_CTYPE=en_CA.UTF-8       LC_NUMERIC=C               LC_TIME=en_CA.UTF-8       
[4] LC_COLLATE=en_CA.UTF-8     LC_MONETARY=en_CA.UTF-8    LC_MESSAGES=en_CA.UTF-8   
[7] LC_PAPER=en_CA.UTF-8       LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_0.9.3.1  car_2.0-19       effects_3.0-0    colorspace_1.2-4
[5] lattice_0.20-27 

loaded via a namespace (and not attached):
[1] dichromat_2.0-0    digest_0.6.4       gtable_0.1.2       labeling_0.2      
[5] MASS_7.3-29        munsell_0.4.2      nnet_7.3-7         plyr_1.8.1        
[9] proto_0.3-10       RColorBrewer_1.0-5 Rcpp_0.11.1        reshape2_1.2.2    
[13] scales_0.2.3       stringr_0.6.2      tools_3.0.3 
Run Code Online (Sandbox Code Playgroud)

并且,如果这是有用的信息:

getOption("device")
[1] "RStudioGD"
Run Code Online (Sandbox Code Playgroud)

blu*_*e10 10

我有与OP完全相同的问题,但在我的情况下设置options(bitmapType="cairo")并没有解决问题.

在我的情况下,问题是由于我在没有--with-cairo配置选项的情况下从源手动编译R的事实(或者更确切地说:我的系统缺少必要的libcairo2-dev软件包,--with-cairo没有任何影响).用适当的cairo支持重新编译R修复了这个问题.它现在甚至可以工作,虽然getOption("bitmapType")仍然设置为"Xlib".

  • 从源代码构建时,我发现运行“apt-get build-dep r-base-dev”以确保安装系统依赖项很有帮助。即使从 R 版本 xyz 迁移到 R 版本 xy(z + 1) 时也需要这样做 (2认同)

hrb*_*str 9

根据OP的要求:

你可以粘贴getOption("bitmapType")配置中的输出吗?如果它不是" cairo"尝试将其设置为通过,options(bitmapType="cairo")并查看是否得到相同的错误.

  • 将 `bitmapType` 设置为 `"cairo"` 解决了这个问题。谢谢。 (2认同)