В чем разница между печатью и экспортом PDF-файла и вызовом графического устройства для сохранения PDF-файла? - PullRequest
0 голосов
/ 05 июля 2018

У меня R 3.5.1 и RStudio 1.1.453, работающие на MacOS High Sierra 10.13.5, платформа x86_64-apple-darwin17.6.0. Я хочу понять, почему я могу печатать и экспортировать графики, но не могу использовать графическое устройство для сохранения графиков.

Я могу использовать пакет extrafont R для встраивания шрифта Corbel в PDF-графики. Я могу сохранить эти графики с помощью print (), а затем экспортировать через окно Plot. Используя этот метод, шрифт отлично встраивается и отображается.

Однако я хочу, чтобы R сохранил несколько десятков таких графиков без необходимости вручную печатать () и сохранять каждый из них. Для этого есть разные методы.

Один из них - R Графическое устройство PDF . К сожалению, это устройство не очень хорошо взаимодействует с пробелами и другими персонажами. Вот функция, которая производит ggplot:

jobreport_grouped <- function(table, N)
{
  #Group
  table <- table %>%
    group_by(Education, Desired) %>%
    summarize(n())

  #Order
  table <- arrange(table, desc(`n()`))

  #Response label
  response_count <- sum(table$`n()`)

  #Sample size label
  samplesize <- paste("(N = ", sum(table$`n()`), ")", sep="")

  #Grouped barplot
  ggplot(table[which(table$`n()`>N),],
         aes(fill=Education, 
             x=reorder(Desired,-`n()`), 
             y=`n()`)
         ) +
    scale_fill_manual(values = paletteIDCN) +
    IDCNtheme_grouped_dense +
    xlab(paste("Number of Active Members: ", 
               member_count, 
               "\n", 
               "Number of Responses: ", 
               response_count, 
               sep="")
         ) +
    ylab("Number of IDCN Members") +
    ggtitle(paste(desired_title("Professional Areas"), 
                  "\n",
                  today, 
                  sep = ""
                  )
            )+
    geom_col(position="dodge")  
}

А затем вызов этой функции вместе с попыткой написать сюжет

> getGroupedJobReport <- function(A,n){
    +   p <- jobreport_grouped(A,n)
    +   ggsave(p, filename = "~/TMP-R/TDP/plots/Desired_GROUPED.pdf", device = pdf,
    +          width = 12, height = 7, units = "in")
    + }
    > getGroupedJobReport(A1,2)
    There were 50 or more warnings (use warnings() to see the first 50)
    > warnings()
    Warning messages:
    1: In grid.Call(C_textBounds, as.graphicsAnnot(x$label),  ... :
      font width unknown for character 0x20
    2: In grid.Call(C_textBounds, as.graphicsAnnot(x$label),  ... :
      font width unknown for character 0x27
    3: In grid.Call(C_textBounds, as.graphicsAnnot(x$label),  ... :
      font width unknown for character 0x20

После этого я попытался установить MacPorts Cairo вместе с пакетом CRAN Cairo и получил другую ошибку:

> getGroupedJobReport <- function(A,n){
+   p <- jobreport_grouped(A,n)
+   ggsave(p, filename = "~/TMP-R/TDP/plots/Desired_GROUPED.pdf", device = cairo_pdf,
+          width = 12, height = 7, units = "in")
+ }
> getGroupedJobReport(A1,2)
Warning message:
In dev(file = filename, width = dim[1], height = dim[2], ...) :
  failed to load cairo DLL

Какие есть альтернативы родному графическому устройству PDF R и Cairo? Если таковые имеются, какие из них я должен использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...