![](/img/trans.png)
[英]Unicode characters in plots to use in dynamic reports using R, Sweave and knitr
[英]R plots some unicode characters but not others
我們的系統管理員剛剛將我們的操作系統升級到SLES12SP1。 我重新安裝了Rv3.2.3並試圖制作情節。 我使用cairo_pdf
並嘗試制作一個x-label為\ʘ
即太陽符號的圖,但它不起作用:標簽只是空白。 例如:
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
關於如何讓太陽能符號出現的任何提示?
也許您的文本編輯器正在使用latin1,因此您可以將latin1字符發送到您的控制台。
看看編碼
Encoding('ʘ')
和/或嘗試
plot(1, xlab=iconv('ʘ', from='latin1', to="UTF-8"))
但要小心編碼可能會在應對時發生變化。 如果您使用Notepad ++,您可以在文本編輯器之間轉換不同的編碼。
注意:我認為你應該首先使用新系統:
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
。 在我的設備(UNIX的Mac分支)上,Arial字體具有以下輸出:
png(type="cairo-png");plot(1, xlab="\u0298");dev.off()
我多年來對類似問題的觀察使我相信開羅圖形更可靠地跨平台。 但是由於R可以在沒有cairo支持的情況下編譯,所以這不是一個確定的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.