theme(axis.text.x=element_text(angle=90, size=8, vjust=0.8))
旋转x轴标题
theme(plot.margin = unit(c(0.1, 0, 0, 0),"cm"))
为图片设置margin, 顺序遵循 上右下左
library(gridExtra)
grid.arrange(g1, g2, g3, g4, main, sub, left)
合并多个ggplot2的图片并可以设置main, sub, left等标题。
标题可以通过textGrob
设置格式
main <- textGrob('title', gp=gpar(cex = 1.2), vjust = 1)
g <- ggplot(data = data, aes_string(x = colname)) + # colname 为字符串,可以用aes_string() 进行转换
geom_bar(aes(fill = factor(flag)), # 用到data中的数据,建立映射关系均要用到aes,fill表示填充,后面会设置具体的填充颜色,如不设置会采用系统默认,凡是表示分组都要转换为factor
colour="white", # colour设置边框的颜色, width 设置
stat='bin', # stat=‘bin’ 表示系统自行计算频数作为y轴, stat = 'identity'表示使用自己的数据作为y轴
#width = 0, # 两个bar的间隔,当x轴为连续数据时不起作用
binwidth = 0.3, # 区段的长度, 计算该区段的频数
na.rm = T # 清除空值
)
g1 <- g +
theme_bw() + #设置主题, 将背景作为白色
scale_fill_manual(values = c('1' = color1, '0' = color2), name = 'value', labels = c('<=-0.3 & >=0.3','>-0.3 & <0.3')) + # 设置填充的方式,manual表示手动填充, 这里的‘1’和‘0’表示`fill=factor(flag)`中的levels, 那么为legend title, label 为legend标签
theme(panel.grid.major = element_blank(), # 通过设置主题将 主(major)次(minor)网格线去掉
panel.grid.minor = element_blank(),
legend.position=c(0.85, 0.85))+ # 设置legend的位置,c(0,0)表示左下角, c(1,1)表示右上角
# scale_x_continuous 改为 coord_cartesian 效果更好
# scale_x_continuous(limits= c(-8, 3), # 设置x轴, continuous表示数据为连续型,limits表示数据的范围
# breaks = seq(-8, 3, 1.5), # breaks 表示刻度的表示
# expand = c(-0.05, 0))+ # 采用 stat=‘bin’会发现 左边,底边图不能对齐到轴线,采用expand可以进行设置,x轴设置了c(-0.05, 0),y轴设置了c(0, 0)这是做出的尝试, 并没有深究其原因
# scale_y_continuous(limits = c(0, 1500), expand = c(0, 0)) + # 同 scale_x_continuous
coord_cartesian(xlim = c(-8, 3), ylim = c(0, 1500))+
xlab(title)+ # 设置x轴的标题
ylab('number of molecules') + # y轴的标题
ggtitle('Distribution') + # 大标题
theme( axis.title = element_text(size= 18), # 设置轴标题,可以细致到 axis.title.x, axis.title.y
axis.text = element_text(size = 14), # 设置轴刻度
legend.title = element_text(size = 12), # 设置图例的标题
legend.text = element_text(size = 12)) # 设置图例的项目
png("plot01.png", width=35, height=20, res=300, units = 'cm')
导出png文件,单位为cm
scale_x_continuous(limits = c(-50, 50)) # 截取[-50, 50]的数据进行作图,改变了原始数据
coord_cartesian(xlim = c(-50, 50)) # 截取[-50, 50]的数据进行展示,原始数据不变