forked from onlybugs/RforBioInfo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Lesson5 图例颜色背景坐标等等.R
228 lines (182 loc) · 6.47 KB
/
Lesson5 图例颜色背景坐标等等.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
library(ggplot2)
#前几课做过的部分,数据的基本读取与清洗
{
#读取文件
HMM_name <- "Encode_HMM.bed"
HMM <- read.table(HMM_name, sep="\t", header=FALSE)
#命名
names(HMM) = c("chrom","start","stop","type")
#排序
HMM$chrom <- factor(gsub("chr", "", HMM$chrom, fixed=TRUE),
levels=c(seq(1,22),"X","Y"))
#筛选
HMM <- HMM[HMM$type
%in% c("1_Active_Promoter",
"4_Strong_Enhancer","8_Insulator"),]
#再次重命名
library(plyr)
HMM$type <- revalue(HMM$type,
c("1_Active_Promoter"="Promoter",
"4_Strong_Enhancer"="Enhancer",
"8_Insulator"="Insulator"))
# 尝试画图
ggplot(my_data,aes(x=chrom,fill=type)) + geom_bar()
}
#关于标题,图例标题,xy坐标轴标题的设置和对所有的字体大小的设置
{
# 保存对象
b = ggplot(HMM,aes(x=chrom,fill=type)) + geom_bar()
# 增加标题,用labs函数增加标题
b + labs(title="Regulatory features by chromosome")
# 改变xy以及图例的标题,fill表示fill图例标题的意思,colour表示colour标题意思
b + geom_bar() + labs(x = "Chromosome",y="Count",fill="Feature")
# 保存标题的配置
b = b + geom_bar() + labs(x = "Chromosome",y="Count",fill="Feature")
# 绘制b
b
# 修改背景层,设置字体大小为8
b + theme_gray(base_size = 8)
# 这段代码里图片字体永久设置为8
theme_set(theme_gray(base_size = 8))
b
# 恢复默认
theme_set(theme_gray())
b
# 作者的喜好
theme_set(theme_gray(base_size = 16))
b
}
# 关于调色,统计图中颜色的展现
{
library(RColorBrewer)
display.brewer.all()
b = b + theme_gray(base_size = 12)
#利用scale_fill_brewer函数指定调色板
b + scale_fill_brewer(palette="Set1")
b + scale_fill_brewer(palette="Pastel1")
b + scale_fill_brewer(palette="YlOrRd")
#利用scale_fill_manual函数指定颜色向量
b + scale_fill_manual(values = c("green","blue","red"))
#使用Rcolorbrewer的调色板
col = brewer.pal(3,'Set3')
b + scale_fill_manual(values = col)
# 新建一个巨大的调色板
palette1 <- brewer.pal(9,"Set1")
palette2 <- brewer.pal(8,"Set2")
palette3 <- brewer.pal(9,"Set3")
# 展示调色板
pie(rep(1,length(palette1)),col=palette1)
pie(rep(1,length(palette2)),col=palette2)
pie(rep(1,length(palette3)),col=palette3)
# 组合上述调色板
big_palette <- c(palette1,palette2,palette3)
# 绘制上述调色板并在统计图中使用
pie(rep(1,length(big_palette)),col=big_palette)
chr1 = ggplot(HMM,aes(x = type,fill = chrom)) + geom_bar()
chr1 + scale_fill_manual(values = big_palette)
# 利用sample进行随机取色
chr1 + scale_fill_manual(values = sample(big_palette))
#仍旧利用brewer取色
b + scale_fill_brewer(palette="Set2")
}
# 关于字体大小的分别的设置,x,y,title,legend的分别设置
{
#一切都恢复默认,然后画图
theme_set(theme_gray())
b
# 两个基础的背景的默认配置
b + theme_gray() # 默认
b + theme_bw() # 黑白
# 设置字体和字体大小
b + theme_gray(base_size = 24,
base_family = "Times New Roman")
#关于坐标轴和图例的处理
# 设置坐标轴上刻度字的字体大小
b + theme(axis.text=element_text(size=20)) # numbers on axes
# 设置坐标轴标签字体的大小
b + theme(axis.title=element_text(size=12)) # titles on axes
# 设置图例标题字体大小
b + theme(legend.title=element_text(size=20)) # legend title
# 设置图例内容的字体大小
b + theme(legend.text=element_text(size=20,family="Times New Roman"))
# 这一段的综合应用
b + theme(
legend.text=element_text(size=20,family="Times New Roman"),
axis.title=element_text(size=30),
axis.text=element_text(size=20)
)
}
# 设置背景色和网格线以及擦除网格
{
# 改变背景色
b + theme(panel.background = element_rect(fill="pink"))
b + theme(panel.background = element_rect(fill="white"))
# 改变网格线颜色
b + theme(panel.grid.major = element_line(colour = "pink"),
panel.grid.minor = element_line(colour = "pink")
)
# 擦除网格线
b + theme(panel.grid.major = element_line(NA),
panel.grid.minor = element_line(NA))
# 凸显y网格线并擦除x网格线
b + theme(panel.grid.major.y = element_line(colour = "black",size=0.2),
panel.grid.major.x = element_line(NA),
panel.grid.minor = element_line(NA))
}
# 对坐标轴刻度线的调整,包括颜色,大小等等
{
#原图
b
# 设置坐标轴刻度大小更大
b + theme(axis.ticks = element_line(size=2))
#去除坐标轴的刻度线
b + theme(axis.ticks = element_line(NA))
# 设置刻度线的颜色
b + theme(axis.ticks = element_line(color="blue",size=2))
# 刻度线综合应用
b + theme(axis.ticks = element_line(size=2),
axis.ticks.x = element_line(color="blue"),
axis.ticks.y = element_line(color="red"))
}
# 改变图例的位置,移除图例标题,移除图例
{
# 改变图例的位置
b + theme(legend.position="top")
b + theme(legend.position="bottom")
b + theme(legend.position=c(0,0))
b + theme(legend.position=c(1,1))
b + theme(legend.position=c(0.8,0.8))
# 移除图例标题
b + labs(fill="")
b + labs(fill="") + theme(legend.position=c(0.8,0.8))
# 完全移除图例
b + guides(fill=FALSE)
}
#theme实例以及设置自己配置的参数为默认参数的方法,
#使y轴和柱子挨在一起的方法
#恢复默认配置的方法
{
# 去除网格线和背景色,然后设置主坐标轴线size=0.5,
#设置标题和刻度值大小
pstyle <- b + guides(fill=FALSE) + theme(axis.line = element_line(size=0.5),
panel.background = element_rect(fill=NA,size=rel(20)),
panel.grid.minor = element_line(colour = NA),
axis.text = element_text(size=16),
axis.title = element_text(size=18))
#画图
pstyle
#让柱子和坐标挨在一起
pstyle + scale_y_continuous(expand=c(0,0))
# 将上述参数设为默认
theme_set(theme_gray()+theme(axis.line = element_line(size=0.5),
panel.background = element_rect(fill=NA,size=rel(20)),
panel.grid.minor = element_line(colour = NA),
axis.text = element_text(size=16),
axis.title = element_text(size=18)))
b
# 指定expand = 0,0必须要没有图例才可以,即guides(fill=FALSE)
b + scale_y_continuous(expand=c(0,0)) + guides(fill=FALSE)
# 一切恢复默认
theme_set(theme_gray())
b
}