Символ Unicode в R сюжете - устройство pdf - PullRequest
1 голос
/ 08 мая 2019

Я хотел бы создать график с заголовком оси, который имеет тонкий пробел в качестве разделителя тысяч, и сохранить этот график в формате PDF из R. Например, я бы отформатировал число следующим образом:

string <- "100\u2009000"
string
[1] "100 000"

Здесь R-консоль показывает правильное представление символа пробела "\ u2009" (хотя здесь, в Интернете, он выглядит как полный пробел) Тогда, если я построю это и отправлю в PDFвот так:

pdf("foo.pdf")
plot(1,1, axes = FALSE, xlab = "", ylab = "", col = "#FFFFFF")
text(1, 1, string)
dev.off()

Я получаю кучу предупреждений:

Warning messages:
1: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <e2>
2: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <80>
3: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <89>
4: In text.default(1, 1, string) :
  font metrics unknown for Unicode character U+2009
5: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <e2>
6: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <80>
7: In text.default(1, 1, string) :
  conversion failure on '100 000' in 'mbcsToSbcs': dot substituted for <89>

И в полученном pdf число выглядит так: 100...000

Я вижучто я могу дать аргумент кодирования для устройства pdf, но мне не удалось заставить это работать.

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Вы также можете использовать showtext для визуализации текста, который гарантированно генерирует векторную графику, если вы используете PDF. Однако текст преобразуется в фигуры, что означает, что вы больше не можете выбирать их как текст.

library(showtext)
showtext_auto()

string <- "100\u2009000"
string

pdf("bar.pdf")
plot(1, 1, axes = FALSE, xlab = "", ylab = "", col = "#FFFFFF")
text(1, 1, string, family = "wqy-microhei")
dev.off()
1 голос
/ 08 мая 2019

Вместо этого можно использовать устройство cairo_pdf:

string <- "100\u2009000"
string

cairo_pdf("foo.pdf")
plot(1,1, axes = FALSE, xlab = "", ylab = "", col = "#FFFFFF")
text(1, 1, string)
dev.off()

Это сработало для меня и дает PDF.

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