RStudio中的半透明效果

12

我正在尝试创建一个散点图,在回归线周围绘制半透明的置信区间:

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)

我收到了以下错误信息:

警告信息: In grid.Call.graphics(L_polygon, x$x, x$y, index) : semi-transparency is not supported on this device: reported only once per page

然而,如果我先打开一个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()

可能的问题是什么?有没有办法在不保存为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 

还有,如果这是有用的信息:

getOption("device")
[1] "RStudioGD"

就我个人而言,在Windows 7上使用64位R V3.0.3和RStudio 0.98.501时,我没有遇到这个错误。 - jlhoward
2
你能粘贴一下你的配置中 getOption("bitmapType") 的输出吗?如果不是 "cairo",请尝试通过 options(bitmapType="cairo") 将其设置为 "cairo",看看是否会得到相同的错误。 - hrbrmstr
我也没有收到错误提示:Fedora 18 64位,R 3.0.2,RStudio 0.98.501。 - nico
bitmapType设置为"cairo"即可。谢谢@hrbrmnstr! - msoftrain
@msoftrain,请您把这个发表为一个答案,好吗? - Ben Bolker
显示剩余4条评论
4个回答

15

根据OP的请求:

你能粘贴一下getOption("bitmapType")在你的配置中的输出吗?如果它不是"cairo",尝试通过options(bitmapType="cairo")设置为该值,然后查看是否出现相同的错误。


2
bitmapType设置为“cairo”解决了这个问题。 谢谢。 - msoftrain

12
我和OP遇到了完全相同的问题,但在我的情况下,设置options(bitmapType="cairo")并不能解决问题。
我的问题是由于手动从源代码编译R时没有使用--with-cairo配置选项引起的(或者更准确地说:我的系统缺少必要的libcairo2-dev软件包,--with-cairo没有任何效果)。重新编译带有正确cairo支持的R解决了这个问题。现在尽管getOption("bitmapType")仍然设置为`"Xlib"`,但它已经可以工作了。

2
在从源代码构建时,我发现运行 apt-get build-dep r-base-dev 有助于确保系统依赖项已安装。即使从 R 版本 x.y.z 移动到 R 版本 x.y.(z + 1),有些情况下也需要这样做。 - Peter

1
我在使用RStudio时,运行“dismo”和“ggplot2”包时遇到了类似的问题。由于这个问题是在我将“Ghostscript”安装到我的Window_64之后开始出现的,所以我删除了计算机中的所有这些文件夹,以检查是否正常工作。在删除“Ghostscript”后,RStudio正常工作,没有任何错误。然而,通过使用options(bitmapType="cairo"),我可以解决错误,但每次都需要重新运行才能使RStudio正常运行。

0

我在使用RStudio和R v4.4.0时,在Ubuntu 16.04下遇到了同样的问题。将R更新到v4.4.4并从终端运行RStudio后,它可以正常工作。

请注意,RStudio使用的R版本取决于您启动应用程序的方式(从桌面或终端)。


R现在已经更新至4.2.1版本,而在2019年这是不可能的,因为当时尚未发布R 4.4.0版本。 - llrs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接