---
disqus: ahb0222
GA : G-CQ4L16KHK4
---
# ggplot2推薦圖形配置
> [color=#40f1ef][name=LHB阿好伯, 2020/12/17][:earth_africa:](https://www.facebook.com/LHB0222/)
###### tags: `R` `ggplot2` `可視化`
![](https://i.imgur.com/9vwgKvv.jpg)
[TOC]
ggplot2繪製的圖形非常漂亮
但若是要應用在正式一點的報告中還是會建議進行微調
今天就來分享幾個我喜歡的配置
純屬個人喜好沒有絕對的優劣
首先先安裝與載入這次會介紹的套件
```r=
#install.packages("ggsci") #安裝套件
#install.packages("ggeasy")
#install.packages("extrafont")
library(ggplot2)
library(ggsci) # 修改配色
library(ggeasy) # 修改字體配置
```
## theme主題設定
ggplot2預設是淡灰色背景
ggplot2內建theme_XXX系列函數可以用於修改主題
默認theme_gray()
```r=
p1 <- ggplot(data = diamonds,
mapping = aes(x = price, y = carat, colour = clarity)) + #設定資料集與映射資料
geom_point()
p1
```
![](https://i.imgur.com/A3ZGhfz.png)
### 可用主題theme_XXX()
|主題名稱|特點|
|:---:|:---:|
|theme_gray|帶有灰色背景和白色網格線的ggplot2主題|
|theme_bw|經典的ggplot2主題,對於使用投影機顯示的文件可能會更好呈現|
|theme_linedraw|僅在白色背景上具有各種寬度的黑色線條的主,具有類似的目的theme_bw。請注意,此主題有一些很細的線(<< 1 pt),有些期刊可能會拒絕。|
|theme_light|類似於theme_linedraw但具有淺灰色線條和軸的主題,用於將更多的注意力引向數據。|
|theme_dark|theme_light的黑色表親,具有相似的線條,但背景較暗。有助於使彩色細線突出。|
|theme_minimal|沒有背景的簡約主題|
|theme_classic|具有x和y軸線且無網格線的經典外觀主題|
|theme_void|一個完全空的主題|
![](https://i.imgur.com/PEDaONT.gif)
![](https://i.imgur.com/EbMutRN.png)
可以添加theme_bw()或是theme_light()修改主題
theme_bw()或theme_light()個人覺得比較適合做為論文使用
```r=
p2 <- ggplot(data = diamonds,
mapping = aes(x = price, y = carat, colour = clarity)) + #設定資料集與映射資料
geom_point() +
theme_bw() #修改主題
p2
```
![](https://i.imgur.com/j7yfd8v.png)
```r=
p2_1 <- ggplot(data = diamonds,
mapping = aes(x = price, y = carat, colour = clarity)) + #設定資料集與映射資料
geom_point() +
theme_light() #修改主題
p2_1
```
![](https://i.imgur.com/9Cv501l.png)
## 圖形配色
修改完主題再來介紹一個配色的套件 ==ggsci==
ggsci提供了一組ggplot2受科學期刊,數據可視化,科幻電影和電視節目啟發的調色板
其中非常喜歡她其中的UCSCGB配色
使用方式也十分簡單只需要加上`scale_color_ucscgb()` 或`scale_fill_ucscgb()`
```r=
p3 <- ggplot(data = diamonds,
mapping = aes(x = price, y = carat, colour = clarity)) + #設定資料集與映射資料
geom_point() +
theme_bw() +
scale_color_ucscgb() #使用ucscgb配色
p3
```
![](https://i.imgur.com/lrRWhTJ.png)
```r=
p4 <- ggplot(data = diamonds,mapping = aes(x = color)) + #設定資料集與映射資料
geom_bar(aes(group = cut,fill = cut)) +
scale_fill_ucscgb() +#使用ucscgb填充配色
theme_bw() +
ggtitle("p4") #增加圖片標題
p4
```
![](https://i.imgur.com/m6RGXHz.png)
## 更改字體配置
### 更改字型 - extrafont
```r=+
library(extrafont)
#首次使用執行程式碼載入字體庫
#需等待五分鐘左右
font_import()
#自訂字體
#font_import("C:\\Users\\...\\AppData\\Local\\Microsoft\\Windows\\Fonts\\")
loadfonts(device = "win")
fonts() #查看安裝字體
```
若是無法安裝可以改用showtext套件
```r=
library(showtext)
font_add(family = "AHB", regular = "C:\\Users\\gtgrt\\AppData\\Local\\Microsoft\\Windows\\Fonts\\AHB.ttf")
showtext_auto()
```
```r=+
p5 <- p4 +
ggtitle("p5") +
theme(text=element_text(family = "Times New Roman")) #修改字體
# 標楷體要改為family = "DFKai-SB"
p5
```
![](https://i.imgur.com/qqwZemo.png)
### 匯入字體時發生 had status 139 : No FontName. Skipping.
在Ubuntu中匯入時發生錯誤後來發現是新版Rttf2pt1的錯誤
只需要重新安裝舊版即可
```r=
library(remotes)
remotes::install_version("Rttf2pt1", version = "1.3.8")
extrafont::font_import()
```
## 更改字體大小 - ggeasy
最後看到XY軸的字體有點小
這邊可以使用ggeasy的套件進行修改
```r=+
p6 <- p5 +
ggtitle("p6") +
easy_x_axis_title_size(16) +
easy_y_axis_title_size(16)
p6
```
![](https://i.imgur.com/jkJKY3b.png)
到這邊大致上就是我會對ggplot2圖片的修改
更類似於我會在Sigmaplot所畫的圖片
最後總結一個今天使用到的程式碼
```r=
#install.packages("ggsci") #配色套件
#install.packages("ggeasy") #快速修改文字設定
#install.packages("extrafont") #使用電腦字形
library(ggplot2)
library(ggeasy)
library(ggsci)
library(extrafont)
#font_import() #載入字形
#loadfonts(device = "win")
p <- ggplot()
p + scale_fill_ucscgb() +#使用ucscgb填充配色 #scale_color_ucscgb()
theme_bw() + #更改主題
theme(text=element_text(family = "Times New Roman")) + #修改字體
#theme(text = element_text(family = "AHB"))+
# theme(text=element_text(family = "DFKai-SB")) #標楷體
easy_x_axis_title_size(16) + #更改XY軸字體大小
easy_y_axis_title_size(16)
```
### 更改R的預設語系
有時候會發現ggplot2時間的輸出會是使用中文
然而可以修改系統語系更改輸出
```r=
install.packages("COVID19")
#載入套件
library(COVID19)
library(ggplot2)
library(dplyr)
x1 <- covid19(raw = FALSE)
head(x1)
#全球州數據
x2 <- covid19(level = 2)
x3 <- x1 %>% group_by(date) %>%
summarise_at('deaths',sum)
p1 <- ggplot(data = x3,mapping = aes(x = date, y = deaths)) +
geom_point()
p1
```
![](https://i.imgur.com/Uicg45y.png)
```r=
#R Code
#中改英
Sys.setlocale("LC_TIME", "English")
#英改中
Sys.setlocale(category = "LC_ALL", locale = "cht")
```
![](https://i.imgur.com/2GHsflg.png)
🌟全文可以至下方連結觀看或是補充
全文分享至
https://www.facebook.com/LHB0222/
https://www.instagram.com/ahb0222/
有疑問想討論的都歡迎於下方留言
喜歡的幫我分享給所有的朋友 \o/
有所錯誤歡迎指教
# [:page_with_curl: 全部文章列表](https://hackmd.io/@LHB-0222/AllWritings)
# [R語言網路免費基礎資料與個人推薦書單](/1TgzGGWGT_KLSvkDOwDmTw)
![](https://i.imgur.com/47HlvGH.png)