Сохранить символы юникода в .pdf в R - PullRequest
1 голос
/ 10 июля 2020

Я хотел бы сохранить указанные c символы юникода в файл pdf с ggsave.

Пример кода

library(ggplot2)

ggplot() +
  geom_point(data = data.frame(x=1, y=1), aes(x,y), shape = "\u2191") +
  geom_point(data = data.frame(x=2, y=2), aes(x,y), shape = "\u2020")

ggsave("test.pdf", plot = last_plot()), width = 40, height = 40, units = "mm")

Однако при сохранении .pdf символы юникода преобразуются в три точки ...

Попытки исправить

  1. Я пытался использовать устройство cairo_pdf в ggsave -> не сработало.
  2. Использовал этот пост для построения символов Юникода, но не совсем понял его ...

Вопрос

Как использовать оба символа Юникода в PDF?

> sessionInfo()
R version 3.6.2
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.5

Ответы [ 2 ]

2 голосов
/ 10 июля 2020

Кажется, это работает на моей ма c:

library(tidyverse)

quartz(type = 'pdf', file = 'test.pdf')

ggplot() +
    geom_point(data = data.frame(x=1, y=1), aes(x,y), shape = "\u2191") +
    geom_point(data = data.frame(x=2, y=2), aes(x,y), shape = "\u2020")

Используя предложение отсюда: { ссылка }

1 голос
/ 10 июля 2020

Немного обидчиво использовать ggsave() с символами Юникода и PDF-файлами. Попробуйте явно отправить сообщение на устройство. У меня это не работает, когда я использую pdf(), но при использовании cairo_pdf() работает.

p <- ggplot() +
  geom_point(data = data.frame(x=1, y=1), aes(x,y), shape = "\u2191", size=4) +
  geom_point(data = data.frame(x=2, y=2), aes(x,y), shape = "\u2020", size=4)

Затем сравните эти:

# using pdf() gives me warnings and does not work
pdf('test.pdf')
print(p)
dev.off()

# using cairo_pdf() works
pdf('test_cairo.pdf')
print(p)
dev.off()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...