Mac OS X下 R 中图片正确显示中文的方法

前言

7月开始学习和使用R系统,在绘制图形时,无可避免遇到了中文输出的问题,通常情况下,在默认的设置下,中文在图形中的输出会变成一个个的方框,经过反复的Google和尝试,通过借鉴Windows平台下的各种情况的解决方案(零散的、无效的、烂尾的都有,中文的内容真心糟糕),最后摸索出了一套Mac OS X下简单有效的图形输出中文的解决方案。

一、在Quartz窗口中绘制图形的情况

这是最简单的情况,因为Mac OS X下R系统默认的字体族是Helvetica,虽然很漂亮,但可惜没有中文,因此,只要通过调整par参数设置,将字体设置为能渲染中文的字体即可,具体方法如下:

> par(family = "STHeiti")


我选择的是华文黑体,这是Mac OS X系统默认的中文字体,通过Fontbook,找到支持中文的字体,查看其对应的Family名称,替换掉上述命令中的“STHeiti”即可。

二、输出图形到png、pdf等文件的情况

因为输出到png、pdf文件,R系统需要调用操作系统的Postscript配置,因此简单的通过par命令修改R系统参数就无效了, 感谢推友@老杨的提醒,在用png函数打开画布后,按照情况一中使用par()函数设置字体的方法,也能正确输出汉字,所以下面再谈另一个可行的方法。

虽然在网上目前能搜到的帖子和《R in action》中文版里都说Cairo包是针对Windows环境开发的中文渲染包,但我经过实践发现,在Mac OS X下,Cairo包一样管用,具体做法如下:

1、安装Cairo包并加载:


> install.packages("Cairo")
> library(Cairo)

2、设定Cairo环境下的中文字体,同样的,我还是设定为华文黑体:


> CairoFonts(regular = "STHeiti:style=Light", bold = "STHeiti:style=Regular")


这里设定了常规使用华文细黑(Light),加粗使用华文黑体(Regular),一般情况下,字体Style中的Regular表示正常粗细,而Bold表示加粗,华文黑体有些不同,具体可以通过Fontbook查看一个字体族所具有的Style类型。

3、设置Cairo画布的类型为PNG文件:


> Cairo(width = 10, height = 10, file = paste(getwd(), "/wordcloud", ".png", sep = ""), bg = "white", units = "in", dpi = 600)


这里我设置画布的宽(width)和高(height)皆为10,单位(units)为“英寸”(in),分辨率(dpi)为600dpi,背景颜色(bg)为白色(white),文件名(file)为$Workspace_Dir$/wordcloud.png

4、使用各种函数(plot(),wordcloud(),……)执行绘图命令

这里可以放心的使用任何绘图函数来绘制图形,将字体渲染交给Cairo画布即可。

5、关闭画布,保存改动到文件


> dev.off()


大功告成。

补充:

由于目前还没有学到ggplot()(不过肯定要学的),所以上述方法其实还没有在ggplot情况下检验过,如果有任何问题,也欢迎留言讨论。

Share

421 views

关于Alex

一生俯首拜阳明
此条目发表在习·数据分析分类目录,贴了, , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>