ggplot2是由Hadley Wickham開發的一個功能十分強大的R語言繪圖程序包,它能夠非常輕鬆的畫出各種好看的統計圖形。
關於ggplot2的教程有很多,Cédric Scherer博士的這篇blog[1]是我目前為止看到過的最棒的ggplot2教學,講得非常全面且詳細。因此,在自己學習的同時希望將它分享給更多相關專業的同學。
blog主頁本文翻譯整理了Cédric Scherer的這篇blog,為了讓它更加容易理解,也參考了其它相關的資料,對部分內容進行了補充和改寫。此外,這項工作也得到了Cédric Scherer博士本人的授權以及支持。
由於整篇教學十分全面且詳細,故篇幅也較大,因此將其整理為以下內容,並將在隨後分期推送,希望感興趣的同學可以持續關注,也可加入我們共同交流,分享你的寶貴經驗。
第一期:ggplot2基礎(一)—— A default ggplot, axes, titles
第二期:ggplot2基礎(二)—— Legends, backgrounds & grid lines, margins
第三期:ggplot2基礎(三)—— Colors, themes
第四期:ggplot2基礎(四)—— lines, text
第五期:ggplot2基礎(五)—— Multi-Panel plots, Chart types
第六期:ggplot2基礎(六)—— Coordinates, ribbons, smoothings
第七期:ggplot2之交互圖(Interactive Plots)今天主要介紹第一期。
目 錄
本期內容將會介紹 ggplot2 繪圖語法的基礎,以及如何調整圖形坐標軸的內容和外觀、修改圖形標題等內容。
ggplot2是一個基於圖形語法(The Grammar of Graphics)的繪圖系統。簡單來說,你只需要提供數據(data),並告訴ggplot2如何將變量映射到美學(aesthetics),使用什麼圖形元素(geoms),然後它將會處理剩餘的細節。
什麼是圖形語法?Wilkinson創建了圖形語法來描述所有統計圖形背後的基本特性。圖形語法是對「什麼是統計圖形」這個問題的回答。ggplot2建立在Wilkinson語法的基礎上,它關注於圖層(layer)的優先地位,並對其進行調整,以便在R中使用。
簡而言之,圖形語法告訴我們圖形將數據映射到幾何對象(點、線、條)的美學屬性(顏色、形狀、大小)。
圖形還可以包括關於繪圖坐標系統的數據和信息的統計變換。分面(facet)可用於繪製數據的不同子集。這些獨立組件的組合構成了完整的圖形。
所有的圖形都是由數據(data)、你想要可視化的信息和一個映射(map,如何將數據變量映射到美學屬性的描述)組成的。
有五個映射組件:
1)圖層:幾何元素和統計變換的集合。幾何元素(geoms)代表了你在圖中所看到的東西:如點、線、多邊形等等;統計轉換(stats)對數據進行總結:例如,對觀察數據進行分類和計數以創建直方圖,或擬合線性模型等。2)尺度(Scale):將數據空間中的值映射到美學空間中的值。這包括顏色、形狀和大小的使用。尺度還會繪製圖例和坐標軸,這使得從圖中讀取原始數據的值成為可能(反向映射);3)坐標系統:描述數據坐標如何映射到圖形的平面上。它還提供軸線(axes)和網格線(gridlines)來幫助閱讀圖表。我們通常使用笛卡爾坐標系,但也有其他一些方法,包括極坐標和地圖投影。4)分面:指定如何分解數據子集並將其顯示為小的圖形。5)主題:控制更精細的顯示點,如字體大小和背景顏色。雖然ggplot2謹慎地選擇了默認值,但你可能需要參考其他參考資料來創建有吸引力的圖。由於本文涉及大量的統計圖形元素,在正式進入教程之前,希望明確這些元素的名稱,以免引起混亂。
下面展示了一個常見的統計圖形(直方圖)的基本結構和常見的元素:
個人翻譯 僅供參考以及常見的統計圖形名稱:
1. 繪圖前準備工作1.1 需要安裝的R包tidyverse:同樣出自Hadley Wickham大神之手,包含了ggplot2,dplyr,tidyr,readr,purrr,tibble,stringr, forcats等多個包:以下為blog教程中的R包安裝代碼,自己根據需要安裝。
## 安裝CRAN上的R包
install.packages(c("tidyverse", "colorspace", "corrr", "cowplot",
"ggdark", "ggforce", "ggrepel", "ggridges", "ggsci",
"ggtext", "ggthemes", "grid", "gridExtra", "patchwork",
"rcartocolor", "scico", "showtext", "shiny",
"plotly", "highcharter", "echarts4r"))
## 安裝github上的R包
devtools::install_github("JohnCoene/charter")
1.2 加載數據集本文使用的數據來自National Morbidity and Mortality Air Pollution Study(全國空氣汙染髮病率和死亡率研究,NMMAPS[2]),選取了Chicago市1997-2000年的數據。
# 文件置於工作目錄下
chic <- readr::read_csv("chicago-nmmaps.csv")
數據集Excel文件至文末獲取首先加載ggplot2包或tidyverse包,後者包含了ggplot2等多個包。
# library(ggplot2)
library(tidyverse)
2. 從一個默認的ggplot開始ggplot2的語法與R的基礎繪圖語法不同,根據基本元素,一個默認的ggplot圖需要指定以下內容:數據,美學和幾何圖形。
2.1 定義一個繪圖對象ggplot2繪圖的第一步就是要指定繪圖所需要的數據以及坐標軸對應的變量:
g <- ggplot(chic, aes(x = date, y = temp))ggplot(data = df):告訴ggplot2我們將要處理的數據,本例中為chic,此處省略了data=;
aes(x = var1, y = var2):大多數情況下,你可能需要繪製兩個變量,一個在x軸上,另一個在 y軸上。這些屬於位置美學,這裡,我們將變量date映射到x軸,變量temp映射到y軸。之後也將會映射其他變量到各種各樣的美學屬性,如顏色、大小和形狀。
ggplot2允許你將當前的ggobject(繪圖對象)存儲為變量,在本示例中稱為g。你可以稍後通過添加其他圖層來擴展這個ggobject:可以是一次添加所有圖層,也可以將它賦值給相同的或另一個變量。
Tips:賦值給一個變量的同時顯示該變量的方法就是將整行代碼用()括起來
如果運行上述代碼,只會創建下面的面板:
為什麼?
這是因為ggplot2不知道我們希望如何繪製該數據——我們仍然需要提供一個幾何圖形!
2.2 根據數據添加幾何對象有許多不同的幾何圖形(通常都是以geom_開頭),你可以向ggplot添加一些默認的幾何對象(如散點、線條、直方等等),也可以添加一些擴展包提供的更多幾何對象。
例如,通過添加geom_point()來創建一個散點圖:
g + geom_point()這個數據也可以使用線圖 line plot 來展示:
g + geom_line()你也可以將多種幾何圖形組合起來,這是一個神奇而有趣的開始:
g + geom_line() + geom_point()
2.3 更改幾何圖形的屬性在 geom_* 命令中,你可以操縱一些美學屬性,如顏色、形狀和大小:
g + geom_point(color = "firebrick", # 設置散點顏色
shape = "diamond", # 設置散點形狀
size = 2) # 設置散點大小Tips:ggplot2能夠理解color和colour,以及簡寫的col。
你也可以使用R預設顏色[3]或者十六進位顏色,甚至也可以使用 RGB() 函數添加 RGB/RGBA 顏色。
RGB或RGBA顏色:RGB是三原色(Red Green Blue)的簡稱,多出來的 A 表示透明度。
例如rgb(255, 0, 0) 中的數字表示 3 原色的程度,取值範圍是 0-255,都是 0 就是沒有顏色,沒有色彩就是一片黑暗,也就是黑色。對應的全為 255 則為白色,不同程度的搭配可以得到以萬為單位的顏色種類。
十六進位顏色:三原色每一種顏色強度最低為 0,最高為 255,通常都以 16 進位數值表示,那麼 255 對應於十六進位就是 FF,並把三個數值依次並列起來 ,以#開頭。
例如,顏色值#FF0000為紅色,因為紅色的值達到了最高值 FF(即十進位的255),其餘兩種顏色強度為 0。在例如「 #FFFF00 」表示黃色,因為當紅色和綠色都為最大值,且藍色為 0 時,產生的就是黃色。
常用顏色的十六進位和 rgb 格式[4]
g + geom_point(color = "#b22222",
shape = "diamond",
size = 2)
g + geom_point(color = rgb(178, 34, 34, maxColorValue = 255),
shape = "diamond",
size = 2)每個 geom 對象自帶其屬性(叫做參數),同樣的參數可能產生不同的變化,這依賴於你使用的 geom 對象,比如下面的例子:
g + geom_point(color = "firebrick",
shape = "diamond",
size = 2) +
geom_line(color = "firebrick", # 設置線條顏色
linetype = "dotted", # 設置線型
size = .3) # 設置線的大小
2.4 改變默認的 ggplot2 主題為了展示ggplot的「多才多藝」,讓我們通過設置一個不同的內置主題來擺脫ggplot2灰色的默認外觀,例如theme_bw()——通過調用theme_set(),所有後面的plot將擁有相同的黑白主題。紅點現在看起來好看多了!
theme_set(theme_bw())
g + geom_point(color = "firebrick")如果需要設置回默認主題,運行下面代碼即可。
theme_set(theme_grey()) # 設置灰色主題更多關於如何使用內置主題以及如何自定義主題的信息將會在主題部分詳細敘述。
3. Working with axes (坐標軸)3.1 修改坐標軸標題坐標軸標題的修改使用labs()函數,這裡我們分別為 x 軸和 y 軸提供了一個字符串作為標題:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") + # 設置散點顏色
labs(x = "Year", # 設置x軸標籤
y = "Temperature (°F)") # 設置y軸標籤也可以使用xlab()和ylab()實現同樣的操作:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") + # 設置散點顏色
xlab("Year") + # 設置x軸標籤
ylab("Temperature (°F)") # 設置y軸標籤對於此處標題中的溫度符號 ℉ ,你可以簡單地通過添加符號本身 「 ℉ 」 來完成。
也可以採用另一種複雜一點的方法,即使用 expression() 函數建立表達式,這在添加一些數學公式或複雜符號(如上下標)時非常有用。
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year",
y = expression(paste("Temperature (", degree ~ F, ")"^"(Hey, why should we use metric units?!)")))
3.2 增加坐標軸與坐標軸標題之間的空間theme()函數是修改特定主題元素(文本、標題、符號、背景等)的基本命令,我們將會大量使用它!
現在來修改文本元素:
可以在theme()調用中 element_text()來改變所有或特定文本元素的屬性,這裡是坐標軸標題:ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", # 設置x軸標籤
y = "Temperature (°F)") + # 設置y軸標籤
theme(axis.title.x = element_text(vjust = 0, size = 15),
axis.title.y = element_text(vjust = 2, size = 15))size 調整字號大小;
vjust 指的是垂直對齊,它的範圍通常在 0 到 1 之間,但你也可以指定該範圍之外的值。注意,即使我們水平移動 y 軸上的軸標題,我們也需要指定 vjust(從標籤的角度來看這是正確的)。
你也可以通過指定兩個文本元素的邊距來改變距離:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.title.x = element_text(margin = margin(t = 10), size = 15),
axis.title.y = element_text(margin = margin(r = 10), size = 15))margin 中的t(top)和r(right)用於調整 x 軸和 y 軸標題的位置,你也可以定義 margin(t, r, b, l) 來調整坐標軸標籤的位置;簡單來說,r 和 l 可以調整 Temperature (°F) 進行左右平移,而 t 和 b 可以調整 Year 上下平移。
3.3 改變坐標軸標題的美學屬性這裡再次使用 theme() 函數來修改 axis.title 或者 axis.title.x、axis.title.y 元素。
對於坐標軸標題,可以在 element_text() 中可以修改默認的size、color 和 face(大小、顏色和字體):
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year",
y = "Temperature (°F)") +
theme(axis.title = element_text(size = 15,
color = "firebrick",
face = "italic"))face 參數用來調整字體,如 bold 粗體,italic 斜體,以及 bold.italic 斜粗體(同時將x軸和y軸的標題文字調整為大小15,火磚色,斜體)。
axis.title 是對 x 軸和 y 軸的坐標軸標題同時進行修改,你也可以使用 axis.title.x 和 axis.title.y 分別對 x 軸和 y 軸標題進行修改:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.title.x = element_text(color = "sienna", size = 15),
axis.title.y = element_text(color = "orangered", size = 15))將x軸的標題文字修改為大小15,顏色為sienna黃土色, y軸的標題文字調整為大小15,橘色)
你也可以使用 axis.title 和 axis.title.y 的組合,因為 axis.title.x 將會繼承來自 axis.title 的值:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.title = element_text(color = "sienna", size = 15),
axis.title.y = element_text(color = "orangered", size = 15))實際上與上圖一致,但這裡首先是同時修改了x軸和y軸,然後又修改了y軸。
也可以在對兩個坐標軸標題修改一些屬性的同時為其中一個坐標軸標題單獨修改一些屬性:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.title = element_text(color = "sienna", size = 15, face = "bold"),
axis.title.y = element_text(face = "bold.italic"))首先是同時修改了 x 軸和 y 軸的標題為大小15,黃土色以及粗體,然後又將 y 軸的標題修改為斜粗體。
3.4 改變坐標軸文本(數字刻度)的美學屬性類似地,我們使用 axis.text 或 axis.text.x 和 axis.text.y 來修改坐標軸刻度的外觀:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.text = element_text(color = "dodgerblue", size = 12),
axis.text.x = element_text(face = "italic"))
3.5 旋轉坐標軸刻度文本承接前面所述,theme 函數中的文本元素參數 angle 允許你旋轉坐標文本,使用 hjust 和vjust,你可以水平(0 =左,1 =右)和垂直(0 =上,1 =下)調整文本的位置:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.text.x = element_text(angle = 50, vjust = 1, hjust = 1, size = 12))
3.6 移除坐標軸標題以及文本刻度我們可以使用 theme_blank() 來移除坐標軸標題,但更簡單的方法是使用 labs():
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = NULL, y = "")Tips:NULL相當於完全移除了標題,類似於 element.blank(),而「 」將保留標題空間,但什麼也不顯示。
如果你不想讓坐標軸顯示刻度,也可以這樣進行刪除:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
theme(axis.ticks.y = element_blank(),
axis.text.y = element_blank())上述代碼中的 axis.ticks.y 指 y 軸的刻度,而 axis.text.y 則是指 y 軸的刻度文本。
3.7 限制坐標軸範圍有時候你需要更仔細地看某個範圍內的數據的圖像,可以這樣做:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
ylim(c(0, 50))這樣只顯示了 Temperature(y軸)在 0 到 50 之間的數據,相當於放大顯示了部分數據。
也可以使用 scale_y_continuous(limits = c(0, 50)) 或 coord_cartesian(ylim = c(0, 50)) 。區別是:前者移除了所有不在範圍內的數據點,而後者只是像 ylim(0, 50)一樣調整了圖像的顯示範圍。
你或許會好奇兩者有什麼區別,讓我們比較下面兩幅圖:
你或許已經注意到左邊的圖在 y 軸限制範圍外的部分是空的,而右邊的圖在範圍之外的數據點仍然存在。
或許你會想:這樣的區別似乎無關緊要。繼續來看下面的箱形圖:
因為 scale_x|y_continuous() 首先截取了數據,而 coord_cartesian() 只是截取了圖像,範圍之外的數據仍然存在,導致我們對箱線圖的估計完全不同,而且是錯誤的,至少在這種情況下這不是你的目標!你細品。
3.8 強迫R繪製從原點開始繪圖chic_high <- dplyr::filter(chic, temp > 25, o3 > 20) # 選取部分數據
ggplot(chic_high, aes(x = temp, y = o3)) +
geom_point(color = "darkcyan") +
labs(x = "Temperature higher than 25°F",
y = "Ozone higher than 20 ppb") +
expand_limits(x = 0, y = 0)個人感覺這個功能有點雞肋,也就是當你的數據範圍比較大時,繪圖的起始點仍然從 0 開始。
使用 coord_cartesian(xlim = c(0, NA), ylim = c(0, NA)) 可以達到同樣的效果。
ggplot(chic_high, aes(x = temp, y = o3)) +
geom_point(color = "darkcyan") +
labs(x = "Temperature higher than 25°F",
y = "Ozone higher than 20 ppb") +
coord_cartesian(xlim = c(0, NA), ylim = c(0, NA))或者像這樣:
ggplot(chic_high, aes(x = temp, y = o3)) +
geom_point(color = "darkcyan") +
labs(x = "Temperature higher than 25°F",
y = "Ozone higher than 20 ppb") +
expand_limits(x = 0, y = 0) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
coord_cartesian(clip = "off")注意與上圖的區別,原點的位置變了。
參數 clip = "off" 允許在面板區域之外繪製,也就是把圖層畫在畫布之外。關於這個問題的詳細描述參見這篇文章[5],此處調用它是為了確保 c(0,0) 處的刻度沒有被切掉。
3.9 相同比例的坐標軸就是讓 x 軸和 y 軸的刻度比例保持一致。為了展示,讓我們畫出原始溫度與添加了一些隨機噪聲(在原有數值上添加隨機數)的溫度的散點圖。
coord_equal()是一個具有指定比率的坐標系統,默認值 ratio = 1 確保 x 軸上的一個單位與 y 軸上的一個單位具有相同的長度:
ggplot(chic, aes(x = temp, y = temp + rnorm(nrow(chic), sd = 20))) +
geom_point(color = "sienna") +
labs(x = "Temperature (°F)", y = "Temperature (°F) + random noise") +
xlim(c(0, 100)) + ylim(c(0, 150)) +
coord_fixed()x 軸上的 0-50 與 y 軸的 0-50 長度是相同的,擁有相同的比例。
而 ratio 大於 1 時 y 軸上的單位比 x 軸上的單位長,反之則短。
ggplot(chic, aes(x = temp, y = temp + rnorm(nrow(chic), sd = 20))) +
geom_point(color = "sienna") +
labs(x = "Temperature (°F)", y = "Temperature (°F) + random noise") +
xlim(c(0, 100)) + ylim(c(0, 150)) +
coord_fixed(ratio = 1/5)
3.10 使用函數來改變標籤有時修改一下(刻度)標籤是很方便的,可以添加單位或百分比符號而不將它們添加到數據中。在這種情況下,你可以使用函數來完成:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = NULL) +
scale_y_continuous(label = function(x) {return(paste(x, "Degrees Fahrenheit"))})就是把原有的刻度與表示單位的字符串「粘貼」在了一起。
4. Working with titles (標題)4.1 添加一個圖形標題使用 ggtitle() 函數來可以為圖形添加一個標題:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
ggtitle("Temperatures in Chicago")或者你也可以使用 labs() 你可以添加一些參數,如補充的副標題、標籤tag、備註caption:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)",
title = "Temperatures in Chicago",
subtitle = "Seasonal pattern of daily temperatures from 1997 to 2001",
caption = "Data: NMMAPS",
tag = "Fig. 1")
4.2 標題加粗並在基線處添加空格因為圖標題屬於主題元素,所以我們使用 theme() 函數和文本元素 axis.title 和 axis.text 來修改字體和邊距。
以下所有主題元素的修改不僅適用於標題,也適用於所有其他標籤,如plot.subtitle, plot.caption, plot.caption, legend.title, legend.text, axis.title 和 axis.text
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)",
title = "Temperatures in Chicago") +
theme(plot.title = element_text(face = "bold",
margin = margin(10, 0, 10, 0),
size = 14))margin 函數中的四個參數依次為 t (top),r (right),b (bottom) 和 l (left),可以這樣來記:「t-r-oub-l-e」。
4.3 調整標題位置一般對齊(左、中、右)由 hjust (表示水平調整)來控制,當然也可以調整垂直對齊,使用vjust來控制。
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = NULL,
title = "Temperatures in Chicago",
caption = "Data: NMMAPS") +
theme(plot.title = element_text(hjust = 1, size = 16, face = "bold.italic"))也可以根據面板區域通過 plot.title.position 和 plot.caption.position 指定標題、副標題和 caption 的對齊方式。
在大多數情況下,後者在設計上確實是更好的選擇,許多人都很喜歡這個新功能,特別是在 y 軸標籤很長的情況下,對齊看起來很糟糕:
g <- ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
scale_y_continuous(label = function(x) {return(paste(x, "Degrees Fahrenheit"))}) +
labs(x = "Year", y = NULL,
title = "Temperatures in Chicago between 1997 and 2001 in Degrees Fahrenheit",
caption = "Data: NMMAPS") +
theme(plot.title = element_text(size = 14, face = "bold.italic"),
plot.caption = element_text(hjust = 0))下面來調整對齊方式:
g + theme(plot.title.position = "plot",
plot.caption.position = "plot")調整之後標題是與y軸標籤對齊,而不是與y軸對齊,這樣看起來好多了。
4.4 在標題中使用非傳統字體除了 ggplot 的默認字體外,你可以使用不同的字體。有幾個軟體包可以幫助你使用安裝在你電腦上的字體(如office程序中的字體)。
這裡,我使用了showtext包,它可以方便地在R圖中使用各種類型的字體(TrueType、OpenType、Type 1、web 字體等)。
在我們加載軟體包之後,你需要導入字體,這些必須安裝在你的設備上。例如使用 Google 字體,可以通過函數font_add_google()導入,但你也可以用 font_add() 添加其他字體。
Tips:在使用 Google 字體的情況下,您必須安裝該字體並重啟 rstudio 才能使用該字體.
library(showtext)
font_add_google("Playfair Display", ## name of Google font
"Playfair") ## name that will be used in R
font_add_google("Bangers", "Bangers")現在,我們可以使用這些字體:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)",
title = "Temperatures in Chicago",
subtitle = "Daily temperatures in °F from 1997 to 2001") +
theme(plot.title = element_text(family = "Bangers", hjust = .5, size = 25),
plot.subtitle = element_text(family = "Playfair", hjust = .5, size = 15))你也可以為所有的文本元素設置非默認字體,下面將 Roboto Condensed 字體設置作為所有圖形的默認字體:
font_add_google("Roboto Condensed", "Roboto Condensed")
theme_set(theme_bw(base_size = 12, base_family = "Roboto Condensed"))
4.5 改變多行文本之間的空間(間距)當標題有多行文本的時候,使用 lineheight 參數可以改變行距:
ggplot(chic, aes(x = date, y = temp)) +
geom_point(color = "firebrick") +
labs(x = "Year", y = "Temperature (°F)") +
ggtitle("Temperatures in Chicago\nfrom 1997 to 2001") +
theme(plot.title = element_text(lineheight = .8, size = 16))本期完整代碼及示例數據下載:
https://osf.io/3kbw5/最後,我們誠摯地邀請對ggplot2或R語言繪圖感興趣的同學可以加入我們,共同完成後續內容的整理。如有意向,可以聯繫統計聯盟小助手微信:Hpa201904或者郵箱uunotebook@163.com。
作者:郭治辰,江西師範大學心理統計與測量專業碩士在讀,研究領域為項目反應理論,認知診斷,計算機化自適應測驗,智能測評
本文轉載自公眾號荷蘭心理統計聯盟,如需轉載請獲取原作者授權。
參考資料[1]blog網址: https://www.cedricscherer.com/2019/08/05/a-ggplot2-tutorial-for-beautiful-plotting-in-r/
[2]數據集百度雲連結: https://pan.baidu.com/s/1L9YpsuyaiIIeaWcXwybP4w提取碼:aaaa
[3]R預設顏色: http://www.stat.columbia.edu/~tzheng/files/Rcolor.pdf
[4]常用顏色的十六進位和 rgb 格式: https://blog.csdn.net/qq_37959401/article/details/79615979?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-3&spm=1001.2101.3001.4242
[5]這篇文章: https://guangchuangyu.github.io/2018/05/ggplot2-clip/