怎麼在R語言的圖表中顯示中文?
在
用R語言畫長條圖 bar chart
一文中,我介紹怎麼用 ggplot2 套件畫出長條圖。當時圖表中有成功顯示中文,究竟是怎麼做到的?這篇文章會提供程式碼,讓你不用每次畫圖都要重新 Google。
在MAC系統中畫圖時,如果沒有指定合適的中文字體,圖表中的中文就會變成方塊,例如 RStudio Community 的
這篇文
。
想要呈現中文並不困難,不用額外安裝套件,只要找到
正確的字體名稱就好
。那麼,要怎麼知道字體叫什麼名字?答案是從蘋果電腦內建的字體簿開始找,對應到的英文是 font book,可以到應用程式列表中查看,或者直接用 command + space 尋找。
應用程式中也可以找到
打開字體簿後,可以看到很多字體。
預覽呈現出許多字體樣式可供選擇
下一步很簡單,對著想要使用的字體按下右鍵,這個步驟的目的是察看字體的全名,舉例來說,我最常用也最愛用的就是”Noto Sans CJK TC”,也就是「思源黑體 繁體中文」的意思。
對要使用的字體按下右鍵
按下右鍵跑出的選單中,確認引號中的內容,接著在語法中指定該字體即可,以下是範例程式碼:
ggplot 版本:
data.frame(a=1:10,b=2*(1:10)+1) %>%
ggplot(aes(x = a, y = b)) + geom_point() +
labs(title = "你好嗎") +
theme(plot.title = element_text(family = "Noto Sans CJK TC Regular"))
base R 版本:
a=1:10
b=2*(1:10)+1
par(family = "Noto Sans CJK TC Regular")
plot(a,b)
title("你好嗎")
如果在上面右鍵跑出的選單中,點擊「顯示於Finder」,就會跑出字體原始檔案的位置,這時候查看詳細資訊也可以看到字體的名稱喔!
查看詳細資訊也能看到字體的名稱
Windows
跟在MAC系統中相似,畫圖時如果沒有指定合適的中文字體,圖表中的中文會自動採用其他字體,以下方的程式碼為例,實際執行時會顯示如下的
warnings:
#> Warning in grid.Call(C_textBounds, as.graphicsAnnot(x
\(label), x\)
x, x$y, : font family ‘測試字體’ not found, will use ‘wqy-microhei’ instead
簡單來說,因為找不到 ‘測試字體’,所以改採 ‘wqy-microhei’ 代替。
library(ggplot2)
ggplot(data = data.frame(a=1:10,b=2*(1:10)+1), aes(x = a, y = b)) +
geom_point() +
labs(title = "你好嗎") +
theme(plot.title = element_text(family = "測試字體"))
沒有指定合適的中文字體時會用其他字體代替
想要顯示中文字體,必須找到正確的檔案路徑。哪裡可以看呢?蘋果電腦有字體簿,我的HP電腦則有「字型」。打開控制台,搜尋字型或者fonts,就可以看到了。
控制台能夠找到字型
打開字型後找到自己要使用的字型。
找到想用的字型
按右鍵點擊開啟,或者直接點兩下開啟。會跳出一個新的視窗,接著再對想用的類型例如粗、細等,按下右鍵然後選擇內容,就能找到路徑!
找到路徑之後,就搞定了!不過,跟剛剛不一樣的是,在Windows當中,我會載入
library(showtext)
,接著用
showtext_auto()
和
font_add()
這兩個函數。在
font_add()
中,要放入兩個參數,第一個是你想使用的字體名稱,可以自己取名,像是我在下方就省略“CJK”三個字母,第二個參數則是你想使用的字體的檔案路徑,也就是我們剛剛找到的那串內容、上圖當中的「位置」。
library(ggplot2)
library(showtext)
showtext_auto()
font_add("Noto Sans TC Medium", regular = "C:\\Users\\cct\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NotoSansCJKtc-Medium.otf")
font_add("Noto Sans TC Regular", regular = "C:\\Users\\cct\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NotoSansCJKtc-Regular.otf")
font_add("Noto Sans TC Black", regular = "C:\\Users\\cct\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NotoSansCJKtc-Black.otf")
font_add("Noto Sans TC Bold", regular = "C:\\Users\\cct\\AppData\\Local\\Microsoft\\Windows\\Fonts\\NotoSansCJKtc-Bold.otf")
只要先指定好字體名稱以及檔案路徑,畫圖時只要呼叫該名稱,就大功告成。
按下右鍵跑出的選單中,確認引號中的內容,接著在語法中指定該字體即可,以下是範例程式碼:
ggplot 版本:
data.frame(a=1:10,b=2*(1:10)+1) %>%
ggplot(aes(x = a, y = b)) + geom_point() +
labs(title = "你好嗎") +
theme(plot.title = element_text(family = "Noto Sans TC Medium"))
base R 版本:
a=1:10
b=2*(1:10)+1
par(family = "Noto Sans TC Medium")
plot(a,b)
title("你好嗎")
在這篇文章中,我介紹了如何在R語言繪製圖表時呈現中文的方法,Windows和MAC的方法有些不同,但核心精神都是找到字體的位置或是名稱,希望對你有幫助。
Post Views:
241
Currently it appears…
Greetings from Flori…
The article discusse…
Your article helped …
Your point of view c…