在某些时候,需要在 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 语言画图中英文字体解决方案相关推荐

  1. ttc转换ttf字体在线_R 语言画图中英文字体解决方案

    在某些时候,需要在 R 画图中添加中文,但是默认情况下,R 对中文的支持不好.这里推荐一个showtext的 R 包.如果需要将含有中文字体的图形保存为 pdf 文件,可以使用下面讲到的方案,最新版的 ...

  2. R语言画图/绘图/作图2

    R语言画图/绘图/作图2 动画气泡图 可以使用该gganimate包实现动画气泡图.它与气泡图相同,但是,您必须显示值如何在第五维(通常是时间)上变化. 要做的关键是将 设置为aes(frame)要在 ...

  3. R语言中作图字体的设置

    介绍 在R语言中设置字体时需要利用**windowsFonts()**加入到字体库中,例如: windowsFonts(myFont = windowsFont("微软雅黑")) ...

  4. R语言画图——添加数学表达式和R2(Ⅱ)

    R语言画图--添加数学表达式和R2(Ⅱ) 前言 胸卡没有想到随手写的博客竟然得到了那么多的关注! 一天的访问量直接破千,而且还得到了大神的鼓励!(激动) 估计大家是被这个标题吸引.(哈哈) 果然,天下 ...

  5. R语言ggplot2——“Windows字体数据库里没有这样的字体系列”;更改字体

    例如我想将字体设置为黑体: windowsFonts(Heiti=windowsFont("黑体")) p=p+theme(legend.text=element_text(siz ...

  6. linux r语言画图,R语言︱画图

    笔者寄语:不论画啥,你先plot准没错. plot 二维坐标绘图 dotchart 点图 barplot 条形图 hist 直方图 pie 饼图 points 添加点 lines 添加线 text 添 ...

  7. R画图中英文字体完美解决方案

    fontforge.png R语言用来做数据处理和分析很方便,借助ggplot2能够方便的画出比较漂亮且信息丰富的图形,但是由于历史原因,R对中文的支持并不是很好,尤其是作图的时候需要一些特殊的技巧才 ...

  8. R语言-出图时的中英文字体解决方案

    目录 方案1- showtext 方案2-Cairo 在某些时候,需要在 R 画图中添加中文,但是默认情况下,R 对中文的支持不好. 方案1- showtext 这里推荐一个showtext的 R 包 ...

  9. R语言读取 文件 中文乱码,R语言画图 中文不显示

    R语言 读入excel文件:用openxlsx install.packages(openxlsx) library(openxlsx) a<-read.xlsx("exercise1 ...

最新文章

  1. HTML选择器属于jq的选择器吗,JQuery 选择器
  2. 转载--让搜索引擎优化(SEO)更有效 CSS+DIV标签命名规范
  3. 【数据结构与算法】之深入解析“寻找旋转排序数组中的最小值”的求解思路与算法示例
  4. java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库
  5. 汇编语言---键盘KeyCode值列表
  6. python yield使用
  7. jquery html data属性,jQuery Mobile Data 属性
  8. WPF 面试题及答案(三)
  9. nodejs基础 -- 全局对象
  10. c# 的多页打印 [用 PrintDocument 不用水晶报表]
  11. 小波去噪程序c语言,else - 小波去噪c语言程序
  12. 手机无线如何共享给台式计算机,怎么把电脑网络共享给手机上网
  13. 《杀死一只知更鸟》一本心灵成长之书,教会孩zi善待世界
  14. Ralink SDK相关指令总结
  15. Bitly:构建月处理60亿点击的分布式系统
  16. 第一章 计算机基础知识【信息学奥赛】
  17. 基于STM32的ESP8266使用教程(一)
  18. CTC Loss (一)
  19. springboot基于javaweb的社区留守儿童帮扶系统毕业设计源码101603
  20. 【AU】单链表就地逆置

热门文章

  1. 漫画谈一下Maven依赖,百分之90的同学不知道!
  2. Kafka的生产者优秀架构设计
  3. 云计算时代,你真的懂 Docker 吗?
  4. 你写的代码好像一条虫啊!
  5. 不去参加团建k歌,第二天被降薪降职
  6. 【面试】我是如何在面试别人Spring事务时“套路”对方的
  7. 推荐10个安全又有实力的办公软件,极大提升办公效率
  8. OKR不会颠覆KPI,而是融合应用!
  9. 第十一届蓝桥杯省赛 A组 试题H:子串分值
  10. Windows10~Tensorflow-GPU安装