Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

include cairo R on a mac

Tags:

macos

r

cairo

I'm trying to use 'Cairo' package in Rstudio, using the command install.packages('Cairo') and it goes through with no problem. I get this message-

The downloaded binary packages are in
/var/folders/xn/c1nj85gx62b89876s15sbv9h0000gn/T//RtmpK9JM0l/downloaded_packages 

The package appears in the packages list, but when I try to include the package using library(Cairo) or library('Cairo') I get this error mesage-

Error : .onLoad failed in loadNamespace() for 'Cairo', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so':
  dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so, 6): Library not loaded: /opt/X11/lib/libXrender.1.dylib
  Referenced from: /Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so
  Reason: image not found
Error: package or namespace load failed for ‘Cairo’

sessionInfo()

R version 3.3.1 (2016-06-21)
Platform: x86_64-apple-darwin13.4.0 (64-bit)
Running under: OS X 10.11.6 (El Capitan)

locale:
[1] he_IL.UTF-8/he_IL.UTF-8/he_IL.UTF-8/C/he_IL.UTF-8/he_IL.UTF-8

attached base packages:
[1] stats4    parallel  stats     graphics  grDevices utils     datasets  methods  
[9] base     

other attached packages:
[1] GenomicRanges_1.24.2 GenomeInfoDb_1.8.3   IRanges_2.6.1       
[4] S4Vectors_0.10.2     ggbio_1.20.2         BiocGenerics_0.18.0 
[7] ggplot2_2.1.0        BiocInstaller_1.22.3 shiny_0.13.2        

I'm not sure why is this happening, any help? Thanks!

like image 289
T.G. Avatar asked Aug 15 '16 09:08

T.G.


People also ask

What is Cairo package?

Cairo.capabilities() Details. The Cairo package provides multiple back-ends, such as images (PNG, JPEG, TIFF), vector graph- ics (PDF, PostScript, SVG) or displays (X11, Windows).

What is Cairo r?

Cairo: R Graphics Device using Cairo Graphics Library for Creating High-Quality Bitmap (PNG, JPEG, TIFF), Vector (PDF, SVG, PostScript) and Display (X11 and Win32) Output.


2 Answers

You should download X11 for Mac, which is called XQuartz. It doesn't ship with OS X any more, so you have to download it separately from: https://www.xquartz.org/

like image 89
haddr Avatar answered Sep 19 '22 15:09

haddr


For anyone for whom installing XQuartz did not fix the problem:

Check the part of the error message that begins with "Library not loaded: ...". E.g., in the user's question, the error message contains this line:

dlopen(/Library/Frameworks/R.framework/Versions/3.3/Resources/library/Cairo/libs/Cairo.so, 6): Library not loaded: /opt/X11/lib/libXrender.1.dylib

Note this part:

Library not loaded: /opt/X11/lib/libXrender.1.dylib

That is the part that clues us in about XQuartz.

In my case, however, it specified that libjpeg was not loaded, like this:

Error: package or namespace load failed for ‘Cairo’:
 .onLoad failed in loadNamespace() for 'Cairo', details:
  call: dyn.load(file, DLLpath = DLLpath, ...)
  error: unable to load shared object '/usr/local/lib/R/3.5/site-library/Cairo/libs/Cairo.so':
  dlopen(/usr/local/lib/R/3.5/site-library/Cairo/libs/Cairo.so, 6): Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib
  Referenced from: /usr/local/lib/R/3.5/site-library/Cairo/libs/Cairo.so
  Reason: image not found
Error: loading failed

Note this part:

Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.9.dylib

To fix this, I had to run

brew unlink libjpeg; brew reinstall libjpeg

to get it working. I then had to do the same thing for libtiff:

brew unlink libtiff; brew reinstall libtiff

After fixing both of those libraries, running install.packages("Cairo") worked.

like image 33
Chris Middleton Avatar answered Sep 21 '22 15:09

Chris Middleton