我想绘制一个图,该图的轴标题以thin space作为千位分隔符,并将该图另存为R中的pdf。例如,我将格式化这样的数字:
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设备提供编码参数,但是我没有设法使它生效。
答案 0 :(得分:1)
您可以改用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。
答案 1 :(得分:1)
您还可以使用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()