R отображает некоторые символы Юникода, но не другие
наш системный администратор просто обновил нашу операционную систему до SLES12SP1. Я переустановил Rv3.2.3 и попытался сделать графики. Я использую cairo_pdf
и пытаюсь сделать сюжет с x-меткой, являющейся \u0298
то есть символом солнца, но он не работает: ярлык просто выходит пустым. Например:
cairo_pdf('Rplots.pdf')
plot(1, xlab='\u0298') # the x-label comes up blank
dev.off()
Раньше это работало, но по какой-то причине этого больше нет. Он работает с другими персонажами, например
cairo_pdf('Rplots.pdf')
plot(1, xlab='\u2113') # the x-label comes up with the \ell symbol
dev.off()
Когда я просто вставляю символ Солнца, т.е.
plot(1, xlab='ʘ')
то я получаю предупреждение
Warning messages:
1: In title(...) :
conversion failure on 'ʘ' in 'mbcsToSbcs': dot substituted for <ca>
Машина немецкая, но я использую английский язык UTF-8 в США:
> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: SUSE Linux Enterprise Server 12 SP1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
Любые советы о том, как я могу получить символ солнца?
Ответы
Ответ 1
Возможно, ваш текстовый редактор использует latin1, поэтому вы должны отправлять символы latin1 на вашу консоль.
Посмотрите на кодировку
Encoding('ʘ')
и/или попробуйте
plot(1, xlab=iconv('ʘ', from='latin1', to="UTF-8"))
но будьте осторожны, кодировка может измениться при копировании.
Если вы используете Notepad++, вы можете конвертировать в текстовом редакторе между различными кодировками.
Ответ 2
Примечание. Предполагаю, что с новой системой вы должны сначала сделать:
capabilities() #And see what the result for cairo is.
Несколько идей, хотя один из них требует знания того, какие шрифты вы используете, поэтому может потребоваться вывод l10n_info()$MBCS
и names(X11Fonts())
.
Вариант 1) Шрифты Hershey имеют все астрологические знаки как специальные символы побега. Страница 4:
demo(Hershey) # has \\SO as the escape sequence for the "solar" symbol.
Поэтому, глядя на код для функции draw.vf.cell
мы видим, что он использует text
функцию для построения этих символов и поэтому ее использование для обозначения оси потребует добавления xpd=TRUE
к аргументам:
plot(1, xlab="") ; text(1, .45, "\\SO" , vfont=c("serif", "plain"), xpd=TRUE )
Вариант 2) найдите символ солнца в выбранном вами шрифте. Вы можете попробовать установить шрифт на что-то другое, кроме "Helvetica". См. ?X11
который имеет раздел о Каирских шрифтах. Страница справки функции функции points
имеет функцию TestChars, которая позволяет печатать глифы символов в разных шрифтах на вашем устройстве вывода. В этом случае ваше устройство вывода может быть либо cairopdf
либо x11
. На моем устройстве (Mac fork UNIX) шрифт Arial имеет этот вывод:
png(type="cairo-png");plot(1, xlab="\u0298");dev.off()
Мое наблюдение за годы подобных вопросов заставляет меня поверить, что каирская графика более надежно кросс-платформенная. Но так как R может быть скомпилирован без поддержки cairo, это не обязательно.