Как написать график, содержащий символ, в PDF в R?

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

Я могу установить символ бесконечности, выполнив

names(data)[9] <- "∞"

но это приводит к ошибкам кодирования при попытке написать:

conversion failure on '∞' in 'mbcsToSbcs': dot substituted for <...>

person htorque    schedule 07.07.2011    source источник


Ответы (3)


Вы можете использовать Unicode, как в этом примере: «>использование глифов Unicode, похожих на дингбаты, в графике R, на разных устройствах и платформах, особенно в PDF (бесконечность — это Unicode 8734): в частности, вполне возможно, что простое использование cairoPDF устройства сделает эту работу. Вероятно, лучше использовать возможности ?plotmath (как указано в ?boxplot в аргументе names:

 boxplot(matrix(1:10,ncol=2),names=c("a",expression(infinity)))
person Ben Bolker    schedule 07.07.2011
comment
Хмпф, я попытался установить expression(infinity) так, как я установил символ в вопросе, и это не удалось. Ваша версия работает нормально. Спасибо! - person htorque; 07.07.2011

Я не совсем уверен, как вы пытаетесь разместить метку, но у меня работает следующий код:

x <- 1:10
y <- 1:10

pdf("infty.pdf")
plot(x,y,xlab=expression(infinity))
dev.off()

в том, что он создает PDF-файл с осью x, помеченной символом бесконечности. Для математических символов я бы рекомендовал не пытаться хранить их как символы и ожидать, что R будет обрабатывать их так же, как и другие символы. См. ?plotmath для получения дополнительной информации.

person joran    schedule 07.07.2011

У меня была аналогичная проблема в MacOS с символами для мужчин (mars unicode ♂) и женщин (venus unicode ♀). pdf() не будет отображать их, заменив точками.

Затем я установил Cairo, и сначала это тоже не сработало (вместо этого символы были заменены прямоугольниками), пока я не набрал

cairo_pdf(pdf.file,family="Arial Unicode MS")

который работает. Проблема состоит в том, чтобы найти шрифт с символом, который вы хотите определить, поэтому нет гарантии, что он будет работать для других символов.

person Richard Mott    schedule 25.02.2013