R语言学习 - 图形设置中英字体
繪制生信寶典調查總結文中的柱狀圖時,出現了中文亂碼,就搜索了下解決方案,記錄如下。
修改圖形的字體
ggplot2中修改圖形字體。
# 修改坐標軸和legend、標題的字體 theme(text=element_text(family="Arial")) # 或者 theme_bw(base_family="Arial")# 修改geom_text的字體 geom_text(family="Arial")ggplot2支持中文字體輸出PDF
showtext包可給定字體文件,加載到R環境中,生成新的字體家族名字,后期調用這個名字設定字體,并且支持中文寫入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)# 修改坐標軸和legend、標題的字體 theme(text=element_text(family=font_name))# 修改geom_text的字體 geom_text(family=font_name)系統可用字體
Linux字體一般在?/usr/share/fonts下,也可以使用fc-list列出所以加載的字體。
Windows字體在?C:\Windows\Fonts\下,直接可以看到,也可以拷貝到Linux下使用。
合并字體支持中英文
通常情況下,作圖的字體都是英文,ggplot2默認的或按需求加載一種字體就可以了。但如果中英文混合出現時,單個字體只能支持一種文字,最好的方式是合并兩種字體,類似于Word中設置中英文分別使用不同的字體。
軟件FontForge可以方便的合并中英文字體,其安裝也比較簡單,直接?yum install fontforge.x86_64。
假如需要合并FZSTK.TTF?(windows下獲取)和Schoolbell-Regular.ttf?(谷歌下載),這兩個都是手寫字體。按如下,把字體文件和程序腳本mergefont.pe放在同一目錄下,運行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導入即可使用。
一個示例
字體文件自己從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("生信寶典,換個角度學生信") +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
關注生信寶典,換個角度學生信
一個震撼的交互型3D可視化R包 - 可直接轉ggplot2圖為3D
贈你一只金色的眼 - 富集分析和表達數據可視化
是Excel的圖,不!是R的圖
道友,來Rstudio里面看動畫了
用了這么多年的PCA可視化竟然是錯的!!!
R語言可視化學習筆記之ggridges包
高顏值免費在線繪圖(點擊圖片直達網站手冊)
往期精品(點擊圖片直達文字對應教程)
后臺回復“生信寶典福利第一波”或點擊閱讀原文獲取教程合集
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的R语言学习 - 图形设置中英字体的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCR之父凯利·穆利斯:有才,真的可以为
- 下一篇: 蜜蜂性别调控又有新机制?