R语言学习 - 图形设置中英字体
繪制生信寶典調(diào)查總結(jié)文中的柱狀圖時(shí),出現(xiàn)了中文亂碼,就搜索了下解決方案,記錄如下。
修改圖形的字體
ggplot2中修改圖形字體。
# 修改坐標(biāo)軸和legend、標(biāo)題的字體 theme(text=element_text(family="Arial")) # 或者 theme_bw(base_family="Arial")# 修改geom_text的字體 geom_text(family="Arial")ggplot2支持中文字體輸出PDF
showtext包可給定字體文件,加載到R環(huán)境中,生成新的字體家族名字,后期調(diào)用這個(gè)名字設(shè)定字體,并且支持中文寫入pdf不亂碼
library(showtext) showtext.auto(enable=TRUE)font_path = "FZSTK.TTF" font_name = tools::file_path_sans_ext(basename(font_path)) font.add(font_name, font_path)# 修改坐標(biāo)軸和legend、標(biāo)題的字體 theme(text=element_text(family=font_name))# 修改geom_text的字體 geom_text(family=font_name)系統(tǒng)可用字體
Linux字體一般在?/usr/share/fonts下,也可以使用fc-list列出所以加載的字體。
Windows字體在?C:\Windows\Fonts\下,直接可以看到,也可以拷貝到Linux下使用。
合并字體支持中英文
通常情況下,作圖的字體都是英文,ggplot2默認(rèn)的或按需求加載一種字體就可以了。但如果中英文混合出現(xiàn)時(shí),單個(gè)字體只能支持一種文字,最好的方式是合并兩種字體,類似于Word中設(shè)置中英文分別使用不同的字體。
軟件FontForge可以方便的合并中英文字體,其安裝也比較簡單,直接?yum install fontforge.x86_64。
假如需要合并FZSTK.TTF?(windows下獲取)和Schoolbell-Regular.ttf?(谷歌下載),這兩個(gè)都是手寫字體。按如下,把字體文件和程序腳本mergefont.pe放在同一目錄下,運(yùn)行fontforge -script mergefont.pe即可獲得合并后的字體FZ_School.ttf。
$ ls FZSTK.TTF mergefont.pe Schoolbell-Regular.ttf $ cat mergefont.pe Open("FZSTK.TTF") SelectAll() ScaleToEm(1024) Generate("temp.ttf", "", 0x14) Close()# Open English font and merge to the Chinese font Open("Schoolbell-Regular.ttf") SelectAll() ScaleToEm(1024)MergeFonts("temp.ttf") SetFontNames("FZ_School", "FZST", "Schoolbel", "Regular", "") Generate("FZ_School.ttf", "", 0x14) Close()$ fontforge -script mergefont.pe $ ls FZ_School.ttf FZSTK.TTF mergefont.pe Schoolbell-Regular.ttf然后安裝前面的介紹使用showtext導(dǎo)入即可使用。
一個(gè)示例
字體文件自己從Windows獲取,School bell從Google fonts獲取。
library(showtext) ## Add fonts that are available on current path# 方正字體+schoole bell (中英混合) font.add("FZ_School", "FZ_School.ttf") # 黑體 font.add("simhei", "simhei.ttf") font.add("Arial","arial.ttf")# 黑體和Arial的合體 font.add("HeiArial", "HeiArial.ttf") showtext.auto() ?## automatically use showtext for new deviceslibrary(ggplot2)p = ggplot(NULL, aes(x = 1:10, y = 2^(1:10), group=1)) + geom_line() +theme(axis.title.y=element_text(family="Arial"), axis.title.x=element_text(family="HeiArial"),plot.title=element_text(family="simhei")) +xlab("Days spent on 生信寶典") +ylab("Things you have learned") +ggtitle("生信寶典,換個(gè)角度學(xué)生信") +annotate("text", 7, 300, family = "FZ_School", size = 8,label = "收獲曲線 (Harvest curve)", angle=15)# annotate指定的是文字的中間部分的位置ggsave(p, filename="example-SXBD.pdf", width = 7, height = 4) ?## PDF deviceReference
中英文字體混合:
http://www.voidcn.com/article/p-gnggkwmy-vn.html
改變字體類型:
https://github.com/yixuan/showtext
獲取文件名:
https://stackoverflow.com/questions/29113973/getting-filename-without-extension-in-r
關(guān)注生信寶典,換個(gè)角度學(xué)生信
一個(gè)震撼的交互型3D可視化R包 - 可直接轉(zhuǎn)ggplot2圖為3D
贈(zèng)你一只金色的眼 - 富集分析和表達(dá)數(shù)據(jù)可視化
是Excel的圖,不!是R的圖
道友,來Rstudio里面看動(dòng)畫了
用了這么多年的PCA可視化竟然是錯(cuò)的!!!
R語言可視化學(xué)習(xí)筆記之ggridges包
高顏值免費(fèi)在線繪圖(點(diǎn)擊圖片直達(dá)網(wǎng)站手冊)
往期精品(點(diǎn)擊圖片直達(dá)文字對應(yīng)教程)
后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的R语言学习 - 图形设置中英字体的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCR之父凯利·穆利斯:有才,真的可以为
- 下一篇: 蜜蜂性别调控又有新机制?