編者薦語:
昨天美格基因向大家分享了WGCNA的實用乾貨,今天趁熱打鐵,給大家分享R語言畫圖中文字體解決方案!
以下文章來源於生信科技愛好者,作者沈維燕
Bio+IT愛好者社區,生物信息學與互聯網科學技術分享專欄!
在某些時候,需要在R畫圖中添加中文,但是默認情況下,R對中文的支持不好。這裡推荐一個showtext
的R包。如果需要將含有中文字體的圖形保存為pdf文件,可以使用下面講到的方案,最新版的showtext
已經支持了ggplot2
,推薦使用此種方案。
library(showtext)showtext_auto(enable=True) # 表示之後用上同樣的字體font_add("kaishu", "simkai.ttf") # 如果系統已經安裝了該字體,可以通過這種方式調用font_add('SimSun', regular = '/Library/Fonts/Microsoft/SimSun.ttf') #添加字體, 必須給定指定的字體的位置
如果你使用的是Mac,可以打開fontbook,查找你想要字體的位置。如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 span> draw axis labelsplot(1, xlim = c(-3, 3), ylim = c(-3 span>, 3), type = "n")## Then turn showtext on and draw some charactersshowtext_begin()text(runif(100, -3, 3), runif(100 span>, -3, 3), intToUtf8(round(runif(100, 20200< /span>, 30000)), multiple=TRUE), col=rgb(runif(100), runif(100), runif(100), 0.5 + runif(100)/2< /span>), 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 .solocale: [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=Cattached base packages:[1] stats graphics grDevices utils datasets methods baseother attached packages:[1] showtext_0.7 showtextdb_2.0 sysfonts_0.8 loaded via a namespace (and not attached):[1] compiler_3.6.2
< /section>學習幾個R函數
runif()< /code>是R語言生成均勻分佈隨機數的函數,句法是:runif(n,min=0,max=1)
,其中>
> ; runif(5, 0, 1) # 生成5個[0,1]的均勻分佈的隨機數 span>[1] 0.5993 0.7391 0.2617 0.5077 0.7199 span> > runif(5) # 默認生成5個[0,1]上的均勻分佈隨機數[1] 0.2784 0.7755 0.4107 0.8392 0.7455
round
是R語言裡的“四捨五入”的函數,具體的規則採用banker'srounding,即四捨六入五留雙規則(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 < span>2 3
intToUtf8
是一個將整數向量轉換為或轉換為Utf-8編碼字符向量的函數,與之對應的函數是utf8ToInt
——>
> utf8ToInt("沈維燕")[1] 27784 32500 29141> intToUtf8(c(27784, 32500,29141))[1] < span>"沈維燕"> intToUtf8(c(27784, 32500,29141), multiple=TRUE< /span>) # multiple: 轉換為單個字符串還是多個單獨的字符[1] "沈" "維" "燕"
掃描二維碼
獲取更多精彩
美格基因
致尊敬的您:
美格基因專注微生物組學領域,不斷拓展基因組學在環境、生態、農業和醫學健康領域的應用,持續開發國際領先的產品和服務,致力於成為全球領先的微生物組學產品和服務提供者。
公司已開拓的業務領域有:16S/18S/ITS測序;16S全長測序;GeoChip、宏基因組、宏轉錄組、宏病毒組測序;單菌框架圖、完成圖。
目前已為清華大學、中國科學院、中山大學、浙江大學、美國佐治亞理工學院、香港科技大學等國內外眾多科研學術機構提供了全方位的科研服務,在行業內具備顯著影響力。
如您有任何需求和疑問,歡迎隨時諮詢,美格基因竭誠為您服務!
文章為用戶上傳,僅供非商業瀏覽。發布者:Lomu,轉轉請註明出處: https://www.daogebangong.com/zh-Hant/articles/detail/R%20language%20drawing%20Chinese%20font%20solution.html
评论列表(196条)
测试