R绘图字体解决方案(转)
COS论坛里面经常会遇到的一个问题就是绘图时中文字体怎么解决。最初,一个流行的方法是使用family = "GB1"
,但一般这样做出来的图比较难看,而且并没有完全解决问题。后来发现了Cairo包,喜大普奔,但后来又发现它选字体的时候不太明确,也就是说我不知道怎样才能选中我想要的那个字体。再然后,Winston Chang写了extrafont包,功能很完善,但需要系统里面安装Ghostscript。我是懒人,不想花时间在配置Ghostscript上,于是写了一个叫做showtext
的包。(好像哪里不对)
showtext
详细的说明写在我的英文博客里面,四级的词汇量,很好懂的。这里就简单说明一下用法,因为用法挺简单的。
上面那幅图所有的代码如下,当然要事先将其中用到的四个字体文件放到工作目录下。
library(showtext) library(Cairo)font.add("newrocker", "newrocker.ttf") font.add("aerofoil", "aerofoil.ttf") font.add("xkcd", "xkcd.ttf") font.add("nextdoor", "thegirlnextdoor.woff")CairoPNG("showtext.png", 640, 400) showtext.begin() plot(1, type = "n", family = "xkcd", cex.axis = 1.5, cex.lab = 1.5) text(1, 1.2, "showtext 0.2", cex = 5, family = "nextdoor",col = "#F8766D") text(1, 0.8, "has been released!", cex = 5, family = "newrocker",col = "#00BFC4") title("Free to use fonts", family = "aerofoil", cex.main = 2) showtext.end() dev.off()
其实也就两步:先用font.add()
加载字体,然后用showtext.begin()
和showtext.end()
把绘图语句包含进来。
font.add()
的第一个参数是绘图时字体的系列名(family),也就是告诉R如何在绘图时引用这个字体。第二个参数是字体的路径,如果字体在工作目录下就直接打字体名。当然,操作系统一般都会有一些默认的字体安装位置,showtext
(实际上是其依赖的sysfonts包)会尝试搜索这些路径。在Windows下,直接输入
font.add("songti", "simsun.ttc")
就可以加载宋体。
加载完了字体,R本身还不知道如何使用它们,所以,绘图的语句需要包含在一对showtext.begin()
和showtext.end()
中间。这时候只需要指定合适的family
参数就可以使用这些字体了。
showtext
自带了文泉驿微米黑字体,如果只是想在图中使用中文,只需要加载showtext
,然后使用showtext.begin()
和showtext.end()
即可。
注意showtext
只对当前打开的图形设备有效,如果当前没有图形设备,或是设备已关闭,showtext
都是不起作用的。
showtext
的开发页面在https://github.com/yixuan/showtext,欢迎到那里拍砖捉虫。在此留言亦可,重谢。
------------------------------------------------------------------------------------------------------------
前两天把 showtext 包更新到了 0.4-1 版本。因为这次更新的内容比较多,所以简单写篇博客介绍下。
第一个比较重大的改变是现在可以在图形设备中自动使用 showtext
了,用法比以前更为简单。在这个版本之前,需要每次都打开图形设备,调用 showtext.begin()
和 showtext.end()
,然后关闭图形设备。这样反复调用函数显得非常麻烦。在新版本中,只要在最开始调用一下 showtext.auto()
,之后所有的图形设备就会自动使用 showtext
来进行渲染。这对窗口设备尤其重要,因为我们平常用 R 画图时,很少手动去调用 windows()
或是 x11()
,而是直接使用 plot()
函数让 R 自动打开一个窗口。调用了 showtext.auto()
之后,窗口设备也可以自动使用载入的字体了,这对于预览图形效果会很有帮助。
自动调用的另一个好处是能在 ggsave()
中使用 showtext
了。ggsave()
本身会自动打开和关闭图形设备,所以在以前的版本中我们无法在 ggsave()
中插入 showtext.begin()
。现在自动化以后,ggsave()
也可以使用 showtext
的字体库了。
要关闭自动调用功能,只需执行 showtext.auto(FALSE)
。
第二个比较显著的改进是更好地支持了位图图形。在之前的版本中,showtext
主要用于矢量图,比如pdf()
或者 svg()
。如果在 png()
或是 jpeg()
中使用 showtext
,你会发现画出的字体非常难看。这是因为那些位图设备没有较好的抗锯齿支持。而现在,showtext
可以为那些设备绘制好平滑后的字形,所以图片质量也会得到提升。唯一需要注意的是要保持图形设备的 DPI 与 showtext
的一致,比如用 png()
设备时,应该手动设置一下想要的分辨率(此处 DPI 为120)
library(showtext) showtext.opts(dpi = 120) png(..., res = 120)
支持位图图形也就意味着支持了窗口设备,比如 windows()
和 x11()
。
最后一个改进其实是之前 sysfonts
包的更新内容,就是目前在国内无法直接连接 Google 的字体库,所以在使用 font.add.google()
时,可以使用 360 提供的代理。使用方法是加一个参数,比如
library(showtext) font.add.google("Gochi Hand", "gochi", repo = "useso")
其他的例子和说明都可以参见 Github 上的介绍。
转自:http://yixuan.cos.name/cn/2015/04/showtext-new-version/
转载于:https://www.cnblogs.com/payton/p/5391742.html
R绘图字体解决方案(转)相关推荐
- R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)
写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...
- python 画蜘蛛_如何学习 R 绘图?
写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...
- R绘图: figure margins too large错误
最近在研究分类器,鸢尾花数据用得审美疲劳了,就从网上找了一个breast-cancer-wisconsin数据集. 建模前照例是做一些描述性统计,看下样本特征.数据集有9个自变量,1个因变量标签,先简 ...
- R绘图 | 山峦图(ggridges)
ridgeline 整个新系列.目前的几个系列, #R实战 以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文章中但同样很好看的图,致力于给同学们在 ...
- R绘图笔记 | 一般的散点图绘制
可先阅读文章:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 1.利用plot()绘制散点图 R语言中plot()函数的基本格式如下: plot(x,y,...) plot函数中,x和y分别表示所 ...
- R语言可视化R原生plot函数与ggplot可视化结果组合、整合输出实战:原生R绘图plot函数可视化、ggplot2包可视化、R原生plot函数与ggplot可视化结果组合
R语言可视化R原生plot函数与ggplot可视化结果组合.整合输出实战:原生R绘图plot函数可视化.ggplot2包可视化.R原生plot函数与ggplot可视化结果组合 目录
- R: 绘图 barplot
问题:barplot 18.5.16 怎么绘制 barplot,用两种方式:基础绘图 & ggplot2 解决方案: 基础绘图 barplot(height, width = 1, space ...
- ireport4.5在JVM中添加新字体解决方案(Font ‘標楷體‘ is not available to the JVM. See the Javadoc for more details.)
ireport4.5在JVM中添加新字体解决方案(Font '標楷體' is not available to the JVM. See the Javadoc for more details.) ...
- R绘图笔记 | 火山图的绘制
参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘 ...
- R绘图 | 圆角堆叠柱状图(ggchicklet )
ggchicklet 整个新系列.目前的几个系列, #R实战 以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文章中但同样很好看的图,致力于给同学们 ...
最新文章
- shell 脚本简单入门
- 目标检测- YOLO v1--You Only Look Once
- Ubuntu 设置Android adb 环境变量
- CRC16循环冗余校验 RTU-MODBUS标准 Linux C
- Java描述设计模式(19):模板方法模式
- 集散型计算机控制系统的缺点,什么是集散控制系统?有什么特点?
- iis8 php mysql zend,强烈推荐windows 2012 iis8 fastcgi php5.2.17 zend mysql
- 独家揭秘:用友云的新打算
- 批量执行newman
- 沟通的重要工具——乔哈里视窗
- 计算机编程及常用术语英语词汇大全
- 如何卸载AutoCAD 2019,彻底卸载MAC版CAD教程
- nodejs 定时任务
- 解决Vmware下虚拟机下打开gazebo报错:VMware: vmw_ioctl_command error Invalid argument
- 美团技术总结:Java中9种常见的CMS GC问题分析与解决
- 基于 OTA 场景的电控信息安全研究
- html网站上播放视屏代码
- 「GoCN酷Go推荐」Cloudreve 公私兼备的网盘系统
- 计算机毕业设计Java汽车客运站票务管理系统(源码+系统+mysql数据库+lw文档)
- Windows 中通过sh导入csv、tsv文件到数据库