GGplot2简单作图
ggplot2使用过程中的常用资源:
- Cheet sheet at: https://rstudio.com/wp-content/uploads/2015/03/ggplot2-cheatsheet.pdf
- 丰富示例:http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html#top
- 搜索引擎
画图基本公式如下:
散点图scatter plot
library(ggplot2)
rm(list = ls())
data(mpg) # load mpg dataset
head(mpg)
manufacturer model displ year cyl trans drv cty hwy fl class
1 audi a4 1.8 1999 4 auto(l5) f 18 29 p compact
2 audi a4 1.8 1999 4 manual(m5) f 21 29 p compact
3 audi a4 2 2008 4 manual(m6) f 20 31 p compact
base_size = 14
p <- ggplot(mpg, aes(x = cty, y = hwy)) + geom_point() +
labs(title = "", x = "cty", y = "hwy") +
theme(axis.title=element_text(size = base_size),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(colour = "black", fill=NA,size=1),
axis.text.x = element_text(colour="black",size=base_size),
axis.text.y = element_text(colour="black",size=base_size),
plot.title = element_text(size = base_size, hjust = 0.5),
plot.margin = margin(0.3, 0.4, 0.3, 0.3, "cm"))
p
添加回归线,看x轴变量和y变量的相关性及显著性。
lm_eqn <- function(df, y, x){
formula = as.formula(sprintf('%s ~ %s', y, x))
m <- lm(formula, data=df);
eq <- substitute(~~italic(R)^2~"="~r2*","~~italic(p_value)~"="~pvalue,
list(r2 = format(summary(m)$r.squared, digits = 3),
pvalue = format(summary(m)$coefficients[2,'Pr(>|t|)'], digits=1)))
as.character(as.expression(eq));
}
p <- p + geom_text(x=25,y=15,
label=lm_eqn(mpg, "cty", "hwy"),
color='blue',parse=T) +
geom_smooth(method='lm')
p
折线图curve plot
折线图中只有一个group,x轴为连续变量。
fig <- ggplot(mtcars, aes(mpg,qsec)) +
geom_line() +
geom_point() +
labs(title="", x=expression(paste("mpg (x", 10^{9}, ")")), y =expression(paste("qsec (x", 10^{9}, ")")))
fig = fig +theme(panel.border = element_rect( fill = NA, colour = "black", size = 1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank())
fig
折线图中有多个groups,且x轴为不连续的变量。
head(y)
sampleName variable value sampleName_new
1 B73 Total_Bases 77.81782 B73
2 E600 Total_Bases 76.40795 E600
3 D619 Total_Bases 82.04591 D619
fig <- ggplot(y, aes(x=sampleName_new, y=value, group=variable, colour=variable)) +
geom_line(size = 0.5) +
geom_point(aes(shape=variable),size = 1) +
labs(title="", x="", y =expression(paste("Base count (x", 10^{9}, ")"))) +
geom_hline(yintercept=70, linetype="dashed", color = "black")
fig = fig +theme(legend.position = c(0.75,0.85),
panel.border = element_rect( fill = NA, colour = "black", size = 1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
legend.title = element_blank(),
legend.text=element_text(size=base_size),
legend.key = element_blank(),
legend.direction = "horizontal",
axis.text.x = element_text(angle = 90,size=10, hjust = 0.3, vjust=0.5, colour = "black") ,
axis.text.y = element_text(size=base_size, colour = "black"),
plot.margin = margin(-0.5, 0, -0.4, 0, "cm"),
axis.title=element_text(size=base_size))
fig
箱图box plot
fig <- ggplot(mpg, aes(x=class, y=cty, color=class)) +
scale_color_manual(values=c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33", "#A65628")) +
geom_boxplot() +
labs(title="",x="class", y = "cty")
fig <- fig + theme(axis.line = element_line(colour = "black",size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
legend.position = "none",
axis.text.x = element_text(size=base_size,colour = "black"),
axis.text.y = element_text(size=base_size, colour = "black"),
axis.title=element_text(size=base_size))
fig
Violin plot
fig <- ggplot(mpg, aes(x=class, y=cty, color=class)) +
scale_color_manual(values=c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33", "#A65628")) +
geom_violin(trim=FALSE, fill="white") +
geom_boxplot(width=0.1) +
labs(title="",x="class", y = "cty")
fig <- fig + theme(axis.line = element_line(colour = "black",size=1),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.background = element_blank(),
legend.position = "none",
axis.text.x = element_text(size=base_size,colour = "black"),
axis.text.y = element_text(size=base_size, colour = "black"),
axis.title=element_text(size=base_size))
fig
密度图density plot
多个groups的密度图
fig <- ggplot(mpg, aes(cty, color=factor(cyl))) +
geom_density(aes(y = ..density..)) +
ylab("Density") +
xlab("cty") +
ggtitle("City Mileage Grouped by Number of cylinders") +
theme(plot.title = element_text(hjust = 0.5),
legend.position = c(0.7,0.75),
legend.title = element_blank(),
legend.key.width = unit(0.2, "cm"),
legend.text=element_text(size=base_size),
axis.title=element_text(size = base_size),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
panel.border = element_rect(colour = "black", fill=NA,size=1),
axis.text.x = element_text(size=base_size),
axis.text.y = element_text(colour="black", size=base_size))
fig
多个groups的直方图
fig <- ggplot(mpg, aes(cty, fill=factor(cyl))) +
geom_histogram(binwidth = 1,aes(y=1*..density..), position = 'dodge') +
# 这里1*..density.. 是因为binwidth=1,保证y轴的值对应每个group的proportion,是0和1间的数。
ylab("Proportion") +
xlab("cty") +
ggtitle("City Mileage Grouped by Number of cylinders") +
theme(plot.title = element_text(hjust = 0.5),
legend.position = c(0.7,0.75),
legend.title = element_blank(),
legend.key.width = unit(0.2, "cm"),
legend.text=element_text(size=base_size),
axis.title=element_text(size = base_size),
panel.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.line = element_line(colour = "black",size=1),
axis.text.x = element_text(size=base_size),
axis.text.y = element_text(colour="black", size=base_size))
fig
柱状图bar plot
保证例子中是有显示显著水平的
韦恩图venn diagram
热图heatmap
相关文章
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod
随机推荐
- 硅谷互联网公司的开发流程
开发流程包括这么几个阶段: OKR 的设立; 主项目及其子项目的确立; 每个子项目的生命周期; 主项目的生命周期; 收尾、维护、复盘。 第一点,OKR 的设立 所有项目的起始,都应该从 Ro
- RESTful-表述性状态转移风格
REST英文全拼:Representational State Transfer 面向资源编程 资源指的就是一类数据 产品表->就是产品资源 最重要的是如何表示一个资源 地址即
- 稳定性思考
产品功能线 0-1: 当系统从无到有的时候,首要考虑的是研发效率,功能快速迭代,满足快速增长的业务需求 1-10 系统已经搭建起来,此时考虑的是系统的稳定性。 可用性:1.隔离:区分出核心和非核心功能
- Supervisor守护队列发邮件
安装 CentOS: yum -y install supervisor Debien/Ubuntu适用:apt-get install supervisor 配置 修改主配置文件:vim /et
- 安装libsodium,让服务器支持chacha20等加密方式
用chacha20加密方式需要安装libsodium 注意:libsodium从1.0.15开始就废弃了aes-128-ctr yum install wget m2crypto git libsod