R 语言画图中英文字体解决方案
在某些时候,需要在 R 画图中添加中文,但是默认情况下,R 对中文的支持不好。这里推荐一个showtext
的 R 包。如果需要将含有中文字体的图形保存为 pdf 文件,可以使用下面讲到的方案,最新版的showtext
已经支持了ggplot2
,推荐使用此种方案。
这样,在你写的 R 代码中,开头添加:
library(showtext)showtext_auto(enable=True) # 表示之后用上同样的字体font_add("kaishu", "simkai.ttf") # 如果系统已经安装了该字体,可以通过这种方式调用font_add('SimSun', regular = '/Library/Fonts/Microsoft/SimSun.ttf') # 添加字体, 必须给定指定的字体的位置
如果你使用的是 Mac,可以打开 font book,查找你想要字体的位置。如 SimSun 字对应于 /Library/Fonts/Microsoft/SimSun.ttf 文件。
如果你使用的是 Linux,字体应该位于 /usr/share/fonts 目录下。
示例
来一个示例,示例后面有各个函数的解释。
检查系统是否已经安装目标字体
shenweiyan@ecs-steven 22:23:35 /home/shenweiyan$ fc-list |grep SimSun/usr/share/fonts/chinese/simsun.ttc: NSimSun,新宋体:style=Regular/usr/share/fonts/chinese/simsun.ttc: SimSun,宋体:style=Regular
使用 showtext 包在绘图钟显示中英文
library(showtext)showtext_auto(enable=True)font_add('SimSun', "simsun.ttc")
set.seed(123)
## For now we are using a device functions to draw axis labelsplot(1, xlim = c(-3, 3), ylim = c(-3, 3), type = "n")
## Then turn showtext on and draw some charactersshowtext_begin()
text(runif(100, -3, 3), runif(100, -3, 3), intToUtf8(round(runif(100, 20200, 30000)), multiple=TRUE), col=rgb(runif(100), runif(100), runif(100), 0.5 + runif(100)/2), cex=2, family="SimSun")
title("随机汉字", family="SimSun")
showtext_end()
查看当前 R 的会话信息
> sessionInfo()R version 3.6.2 (2019-12-12)Platform: x86_64-conda_cos6-linux-gnu (64-bit)Running under: CentOS Linux 7 (Core)
Matrix products: defaultBLAS/LAPACK: /usr/local/software/miniconda3/lib/libopenblasp-r0.3.7.so
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
attached base packages:[1] stats graphics grDevices utils datasets methods base
other attached packages:[1] showtext_0.7 showtextdb_2.0 sysfonts_0.8
loaded via a namespace (and not attached):[1] compiler_3.6.2
学习几个 R 函数
runif()
是 R 语言生成均匀分布随机数的函数,句法是:runif(n, min=0, max=1)
,其中 n 表示生成的随机数数量,min 表示均匀分布的下限,max 表示均匀分布的上限;若省略参数 min、max,则默认生成 [0,1] 上的均匀分布随机数。例子如下:
> runif(5, 0, 1) # 生成5个[0,1]的均匀分布的随机数[1] 0.5993 0.7391 0.2617 0.5077 0.7199
> runif(5) # 默认生成5个[0,1]上的均匀分布随机数[1] 0.2784 0.7755 0.4107 0.8392 0.7455
round
是 R 语言里的 “四舍五入” 的函数,具体的规则采用 banker's rounding,即四舍六入五留双规则(wiki)。round
的原型是round(x, digits = 0)
,digits 用于设定小数点位置,默认为零即小数点后零位(取整)。例子如下:
> c <- c(1.4, 1.6, 1.5, 2.5, 2.51)> round(c)[1] 1 2 2 2 3
intToUtf8
是一个将整数向量转换为或转换为 Utf-8 编码字符向量的函数,与之对应的函数是utf8ToInt
—— 一个能把 Utf-8 编码字符转换为整数向量的函数。示例如下:
> utf8ToInt("沈维燕")[1] 27784 32500 29141> intToUtf8(c(27784, 32500,29141))[1] "沈维燕"> intToUtf8(c(27784, 32500,29141), multiple=TRUE) # multiple: 转换为单个字符串还是多个单独的字符[1] "沈" "维" "燕"
本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
R 语言画图中英文字体解决方案相关推荐
- ttc转换ttf字体在线_R 语言画图中英文字体解决方案
在某些时候,需要在 R 画图中添加中文,但是默认情况下,R 对中文的支持不好.这里推荐一个showtext的 R 包.如果需要将含有中文字体的图形保存为 pdf 文件,可以使用下面讲到的方案,最新版的 ...
- R语言画图/绘图/作图2
R语言画图/绘图/作图2 动画气泡图 可以使用该gganimate包实现动画气泡图.它与气泡图相同,但是,您必须显示值如何在第五维(通常是时间)上变化. 要做的关键是将 设置为aes(frame)要在 ...
- R语言中作图字体的设置
介绍 在R语言中设置字体时需要利用**windowsFonts()**加入到字体库中,例如: windowsFonts(myFont = windowsFont("微软雅黑")) ...
- R语言画图——添加数学表达式和R2(Ⅱ)
R语言画图--添加数学表达式和R2(Ⅱ) 前言 胸卡没有想到随手写的博客竟然得到了那么多的关注! 一天的访问量直接破千,而且还得到了大神的鼓励!(激动) 估计大家是被这个标题吸引.(哈哈) 果然,天下 ...
- R语言ggplot2——“Windows字体数据库里没有这样的字体系列”;更改字体
例如我想将字体设置为黑体: windowsFonts(Heiti=windowsFont("黑体")) p=p+theme(legend.text=element_text(siz ...
- linux r语言画图,R语言︱画图
笔者寄语:不论画啥,你先plot准没错. plot 二维坐标绘图 dotchart 点图 barplot 条形图 hist 直方图 pie 饼图 points 添加点 lines 添加线 text 添 ...
- R画图中英文字体完美解决方案
fontforge.png R语言用来做数据处理和分析很方便,借助ggplot2能够方便的画出比较漂亮且信息丰富的图形,但是由于历史原因,R对中文的支持并不是很好,尤其是作图的时候需要一些特殊的技巧才 ...
- R语言-出图时的中英文字体解决方案
目录 方案1- showtext 方案2-Cairo 在某些时候,需要在 R 画图中添加中文,但是默认情况下,R 对中文的支持不好. 方案1- showtext 这里推荐一个showtext的 R 包 ...
- R语言读取 文件 中文乱码,R语言画图 中文不显示
R语言 读入excel文件:用openxlsx install.packages(openxlsx) library(openxlsx) a<-read.xlsx("exercise1 ...
最新文章
- HTML选择器属于jq的选择器吗,JQuery 选择器
- 转载--让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范
- 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值”的求解思路与算法示例
- java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库
- 汇编语言---键盘KeyCode值列表
- python yield使用
- jquery html data属性,jQuery Mobile Data 属性
- WPF 面试题及答案(三)
- nodejs基础 -- 全局对象
- c# 的多页打印 [用 PrintDocument 不用水晶报表]
- 小波去噪程序c语言,else - 小波去噪c语言程序
- 手机无线如何共享给台式计算机,怎么把电脑网络共享给手机上网
- 《杀死一只知更鸟》一本心灵成长之书,教会孩zi善待世界
- Ralink SDK相关指令总结
- Bitly:构建月处理60亿点击的分布式系统
- 第一章 计算机基础知识【信息学奥赛】
- 基于STM32的ESP8266使用教程(一)
- CTC Loss (一)
- springboot基于javaweb的社区留守儿童帮扶系统毕业设计源码101603
- 【AU】单链表就地逆置