4

我有一些可以很好地直接打印为 R 代码的图形,但是当由 knitr 生成时会生成错误的文本对齐方式。考虑

library(ggplot2)
library(extrafont)
loadfonts(device="win")
ggplot(data.frame(x=1:10,section=c(rep("You",8),rep("Me",2))))+
geom_point(aes(x=x,y=x))+
ylab("my\nlabel")+
theme(text=element_text(family="Arial Unicode MS"))+facet_wrap(~section)

我明白了

情节1

这很好。然后移动到 knitr (使用 R 降价)

```{r dev=c('png')}
library(ggplot2)
library(extrafont)
loadfonts(device="win")
ggplot(data.frame(x=1:10,section=c(rep("You",8),rep("Me",2))))+
geom_point(aes(x=x,y=x))+
ylab("my\nlabel")+
theme(text=element_text(family="Arial Unicode MS"))+facet_wrap(~section)
```

我收到一些警告(多次)

## Warning: unknown AFM entity encountered
## Warning: font width unknown for character 0x32

并且文本变得未对齐。

情节2

查看 y 标签。

cairo_pdf我在使用该设备时遇到了完全相同的问题

代码变成

library(ggplot2)
cairo_pdf("plot.pdf")
ggplot(data.frame(x=1:10,section=c(rep("You",8),rep("Me",2))))+
geom_point(aes(x=x,y=x))+
ylab("my\nlabel")+
theme(text=element_text(family="Arial Unicode MS"))+facet_wrap(~section)
dev.off()

对于 R 和

```{r dev=c('cairo_pdf')}
library(ggplot2)
ggplot(data.frame(x=1:10,section=c(rep("You",8),rep("Me",2))))+
geom_point(aes(x=x,y=x))+
ylab("my\nlabel")+
theme(text=element_text(family="Arial Unicode MS"))+facet_wrap(~section)
```

对于针织机。警告是现在

## Warning: font family 'Arial Unicode MS' not found in PostScript font database

但图像显示与以前相同的问题。

我已经在带有 R 3.0.1 的 win7 和 MacOS X 平台上重现了这个问题

我想可能有一个简单的解决方案来解决这个问题,但我没有设法弄清楚。

有什么建议么?

4

1 回答 1

0

我不确定根本原因,但您可以通过调整主题元素中的vjust参数来解决它。axis.title.y就像是

theme(
  text=element_text(family="Arial Unicode MS"),
  axis.title.y=element_text(family="Arial Unicode MS", vjust = 0)
)
于 2013-11-07T10:16:09.763 回答