今天的推文內(nèi)容來自論文 Clustering and superspreading potential of SARS-CoV-2 infections in Hong Kong灸蟆, 期刊是 Nature Medicine
論文的數(shù)據(jù)代碼公開钻洒,非常好的學(xué)習(xí)R語言的素材
數(shù)據(jù)代碼地址 https://github.com/dcadam/covid-19-sse
今天的推文內(nèi)容我們來學(xué)習(xí)一下論文中的 Extended Data Fig. 3a 夫晌,堆積柱形圖
這個圖是使用R語言的ggplot2包實現(xiàn)宦芦,用到的函數(shù)是geom_bar(),數(shù)據(jù)如果是離散變量,通常只需要一列數(shù)據(jù)就可以盒刚,出圖以后柱子的高度展示的是這個變量出現(xiàn)的次數(shù)秩铆,下面我們構(gòu)造一份數(shù)據(jù)
df<-data.frame(axis.x=c(rep("A",3),
rep("B",5),
rep("D",4)))
df
ggplot2畫圖
ggplot(data=df,aes(x=axis.x))+
geom_bar()
如果要搞成堆積柱形圖的形式,在添加一列新的變量用來填充顏色
df<-data.frame(axis.x=c(rep("A",3),
rep("B",5),
rep("D",4)),
axis.y=c(sample(c("apple","orange","banana"),
12,replace=T)))
df
library(ggplot2)
ggplot(data=df,aes(x=axis.x))+
geom_bar(aes(fill=axis.y))
以上是基本內(nèi)容耘纱,接下來我們看一下論文中的數(shù)據(jù)和代碼
bar_data <- readr::read_csv("Single_Cell/covid-19-sse-master/data/bar_data.csv")
bar_data
ggplot(data=bar_data) +
geom_bar(aes(x = epi.date, fill = cluster.generation), width = 0.9) +
scale_x_date(name = "Onset Date",
date_breaks = "2 days",
date_labels = "%d %b",
minor_breaks = NULL) +
scale_y_continuous("Case Count", expand = c(0,0), breaks = seq(0,16, by = 2), limits = c(0,16)) +
theme_classic() +
theme(#aspect.ratio = 0.3,
legend.position = 'none',
axis.text.x = element_text(angle = 45, hjust = 1 )) +
scale_fill_viridis_d()
這里學(xué)習(xí)到了一個新的知識點:ggplot2作圖x軸如果是時間格式的數(shù)據(jù)默認(rèn)顯示的是 日加月份,這個時候如果要更改x軸的標(biāo)簽需要用到
scale_x_date()
函數(shù)
接下來使用R語言里的economics數(shù)據(jù)集畫一個折線圖
ggplot(data = economics, aes(x = date, y = psavert)) +
geom_line(color = "steelblue")+
theme_bw()+
scale_x_date(breaks = '1 year')+
theme(axis.text.x = element_text(hjust=1,vjust=0.5,angle=90))
breaks的參數(shù)可選
- day week month year
日期的顯示格式
如果只想顯示年
ggplot(data = economics, aes(x = date, y = psavert)) +
geom_line(color = "steelblue")+
theme_bw()+
scale_x_date(breaks = '1 year',
date_labels = "%Y")+
theme(axis.text.x = element_text(hjust=1,vjust=0.5,angle=90))
還可以更改年月日之間的分隔符
ggplot(data = economics, aes(x = date, y = psavert)) +
geom_line(color = "steelblue")+
theme_bw()+
scale_x_date(breaks = '1 year',
date_labels = "%Y,%B,%d")+
theme(axis.text.x = element_text(hjust=1,vjust=0.5,angle=90))
這里我遇到的問題是:我的月份默認(rèn)顯示的是中文毕荐,如何將他改成英文呢束析?
還可以只選取一定的范圍
min <- as.Date("2002-1-1")
max <- NA
ggplot(data = economics, aes(x = date, y = psavert)) +
geom_line(color = "steelblue")+
theme_bw()+
scale_x_date(breaks = '1 year',
date_labels = "%Y,%B,%d",
limits = c(min,max))+
theme(axis.text.x = element_text(hjust=1,vjust=0.5,angle=90))
參考鏈接
- https://www.datanovia.com/en/blog/ggplot-date-axis-customization/
- https://www.r-graph-gallery.com/279-plotting-time-series-with-ggplot2.html
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本
小明的數(shù)據(jù)分析筆記本 公眾號 主要分享:1、R語言和python做數(shù)據(jù)分析和數(shù)據(jù)可視化的簡單小例子东跪;2畸陡、園藝植物相關(guān)轉(zhuǎn)錄組學(xué)、基因組學(xué)虽填、群體遺傳學(xué)文獻閱讀筆記;3曹动、生物信息學(xué)入門學(xué)習(xí)資料及自己的學(xué)習(xí)筆記斋日!