本系列课程要求大家有一定的R语言基础,对于完全零基础的同学,建议去听一下师兄的《生信必备技巧之——R语言基础教程》。本课程将从最基本的绘图开始讲解,深入浅出的带大家理解和运用强大而灵活的ggplot2包。内容包括如何利用ggplot2绘制散点图、线图、柱状图、添加注解、修改坐标轴和图例等。
本次课程所用的配套书籍是:《R Graphic Cookbooks》
除了以上的基本图形外,师兄还会给大家讲解箱线图、提琴图、热图、火山图、气泡图、桑基图、PCA图等各种常用的生信图形的绘制,还不赶紧加入收藏夹,跟着师兄慢慢学起来吧!
第二章:柱状图深入探究
- 分组柱状图
#######################
## 分组柱状图
library(gcookbook) # 包内含有需要的数据;
cabbage_exp <- cabbage_exp
ggplot(cabbage_exp,aes(Date, Weight, fill = Cultivar)) +
geom_bar(position = "dodge",stat = "identity",color = "black")
ggplot(cabbage_exp,aes(Date, Weight, fill = Cultivar)) +
geom_bar(stat = "identity") # 默认的position = "stack";
# 此外,除了fill可以指定分组变量,color、linestyle也可以指定;
ggplot(cabbage_exp,aes(Date, Weight, color = Cultivar)) +
geom_bar(position = "dodge",stat = "identity")
# 请注意,如果类别变量的组合有任何缺失,则该栏将缺失,相邻的栏将扩展以填充该空间。
ce = cabbage_exp[1:5,]
ggplot(ce,aes(Date, Weight, fill = Cultivar)) +
geom_bar(position = "dodge",stat = "identity",color = "black") +
scale_fill_brewer(palette = "Pastel1")
# 实际情况下确实存在有一种类别没有对应的y值,此时可以使用NA或者0代替;
ce_NA <- cabbage_exp
ce_NA$Weight[6] <- 0
ggplot(ce_NA,aes(Date, Weight, fill = Cultivar)) +
geom_bar(position = "dodge",stat = "identity",color = "black") +
scale_fill_brewer(palette = "Pastel1")
- 修改颜色技巧补充:
#######################
## 修改颜色的技巧:
library(gcookbook)
upc <-subset(uspopchange, rank(Change)>40)
upc
ggplot(upc, aes(x=Abb, y=Change, fill=Region)) + geom_bar(stat="identity")
# 此示例还使用reorder()函数,将条形按其高度进行排序;
ggplot(upc, aes(x=reorder(Abb, Change), y=Change, fill = Region)) +
geom_bar(stat="identity", color="black") +
scale_fill_manual(values=c("#669933", "#FFCC66")) +
xlab("State")
#######################
## 正负两极不同的着色:
csub <- subset(climate, Source == "Berkeley" & Year >= 1900)
# 思路:颜色根据正负数来填充?怎么识别正负数呢?
# 只能新建一个字段:该字段描述了正和负;
# 指定fill为该字段;
csub$pos <- csub$Anomaly10y >= 0
csub
ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos))+
geom_bar(stat="identity", position="identity")
# 使用scale_fill_manual()修改颜色;guide = False参数去掉图例
ggplot(csub, aes(x=Year, y=Anomaly10y, fill=pos)) +
geom_bar(stat="identity", position="identity",color="black", size=0.25)+
scale_fill_manual(values=c("#CCEEFF", "#FFDDDD"), guide=FALSE)