在google搜索了一下,这方面介绍的好帖子太多了,真是好感动!我直接总结转载即可:
很具有参考学习价值的帖子如下:
(1)ggplot更多的画图细节--坐标轴和图例:http://blog.csdn.net/duqi_yc/article/details/12362085
(2)qplot的学习:http://blog.csdn.net/duqi_yc/article/details/12178463
(3)qplot的官方介绍:http://docs.ggplot2.org/0.9.3/qplot.html
=====================================================
以我的一个实际分析代码为例(具体见上一篇博文“ggplot2画boxplot的学习和总结”):
ups
require(reshape2);
require(ggplot2);
ups.melt
p
aes(x=flag,y=value))+geom_boxplot(aes(fill=variable));
#p+ facet_wrap(~ variable, scales="free");
#分别把LFQ、MQ、PANDA画在三个boxplot中
#p+ facet_wrap(~ flag, scales="free"); #分别B/A, C/B, D/C,
E/D把画在四个boxplot中
p
p
ggtitle("22 commonly quantified UPS1 proteins");
#添加横纵坐标名称,添加图的名称
p
#添加legend名称
p + scale_x_continuous(limits = c(-5,15)) ## x-axis范围设置方法一
p + xlim(-5,15) ## x-axis范围设置方法二
windowsFonts(myFont=windowsFont("Arial")) #要修改字体,先要初始化字体
#对x、y轴name做修改
p+theme(axis.title= element_text(size=15, family="myFont",
color="black", face= "bold", vjust=0.5, hjust=0.5))
#仅对y轴name做修改:
p+theme(axis.title.y= element_text(size=15, family="myFont",
color="black", face= "bold", vjust=0.5, hjust=0.5))
#仅对y轴的刻度做修改:
p+theme(axis.text.y= element_text(size=15, family="myFont",
color="black", face= "bold", vjust=0.5, hjust=0.5))
#对图片的title做修改
p+theme(title= element_text(size=15, family="myFont",
color="black", face= "bold", vjust=0.5, hjust=0.5))
#对legend的内容做修改
p+theme(legend.text= element_text(size=15, family="myFont",
color="black", face= "bold", vjust=0.5, hjust=0.5))
vjust和hjust是对图中文字label位置的设置,这里其实并不需要,具体说明如下:
=====================================================
初始图样:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) ## 添加点的数值
如何修改坐标轴的显示范围:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE)
p + scale_x_continuous(limits = c(-5,15)) ## 方法一
p + xlim(-5,15) ## 方法二
p + xlim(min(dt$A, 0)*1.2, max(dt$A)*1.2) ## 一般使用倍数来限定大小,注意定义最小值的方式
如何修改坐标轴的标签(内容、大小、字体、颜色、加粗、位置、角度):
library(ggplot2)
windowsFonts(myFont = windowsFont("华文行楷")) ##如果要更改字体,需要先“绑定”字体
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE)
p + xlab("这是 X 轴") + ylab("这是 Y 轴") + ggtitle("这是标题") ## 修改文字方法一
p + labs(x = "这是 X 轴", y = "这是 Y 轴", title = "这是标题") ## 修改文字方法二
#### 修改 X 轴标签的大小、字体、颜色、加粗、位置、角度 ####
p + xlab("这是 X 轴") + theme(axis.title.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
## face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
如何修改坐标轴的刻度标签(内容):
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE)
p + scale_x_continuous(breaks=dt$A, labels = dt$A*1000) ## 只是把刻度上显示的文字改了而已
如何修改坐标轴的刻度标签(大小、字体、颜色、加粗、位置、角度):
library(ggplot2)
windowsFonts(myFont = windowsFont("华文行楷")) ##如果要更改字体,需要先“绑定”字体
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE)
####修改 X 轴刻度文字的大小、字体、颜色、加粗、位置、角度:
p + theme(axis.text.x = element_text(size = 15, family = "myFont", color = "green", face = "bold", vjust = 0.5, hjust = 0.5, angle = 45))
## face取值:plain普通,bold加粗,italic斜体,bold.italic斜体加粗
如何修改坐标轴的刻度间隔:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE)
p + scale_x_continuous(breaks=seq(0, 10, 5)) ## X 轴每隔 5 个单位显示一个刻度
如何去掉网格线:
删去之前:
删去之后:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
labs(x = "", y = "", title = "") +
theme_bw() +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) +
theme(panel.grid =element_blank()) ## 删去网格线
如何去掉坐标轴上的刻度标签:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
labs(x = "", y = "", title = "") +
theme_bw() +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) +
theme(panel.grid =element_blank()) + ## 删去网格线
theme(axis.text = element_blank()) ## 删去所有刻度标签
# theme(axis.text.y = element_blank()) ## 设置 axis.text.y 则只删去 Y 轴的刻度标签,X 轴同理。
如何去掉刻度线:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
labs(x = "", y = "", title = "") +
theme_bw() +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) +
theme(panel.grid =element_blank()) + ## 删去网格线
theme(axis.text = element_blank()) + ## 删去所有刻度标签
theme(axis.ticks = element_blank()) ## 删去所有刻度线
# theme(axis.ticks.y = element_blank()) ## 设置 axis.ticks.y 则只删去 Y 轴的刻度线,X 轴同理。
如何去掉外层边框:
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
labs(x = "", y = "", title = "") +
theme_bw() +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) +
theme(panel.grid =element_blank()) + ## 删去网格线
theme(axis.text = element_blank()) + ## 删去刻度标签
theme(axis.ticks = element_blank()) + ## 删去刻度线
theme(panel.border = element_blank()) ## 删去外层边框
如何再加上X轴、Y轴(无刻度、无标签):
library(ggplot2)
dt = data.frame(A = 1:10, B = c(2,15,6,18,9,7,13,15,10,3), C = c('A','C','A','B','C','D','A','C','D','B'))
p = ggplot(dt, aes(x = A, y = B, color = C, group = factor(1))) +
geom_point(size = 3.8) +
geom_line(size = 0.8) +
labs(x = "", y = "", title = "") +
theme_bw() +
geom_text(aes(label = B, vjust = 1.1, hjust = -0.5, angle = 45), show_guide = FALSE) +
theme(panel.grid =element_blank()) + ## 删去网格线
theme(axis.text = element_blank()) + ## 删去刻度标签
theme(axis.ticks = element_blank()) + ## 删去刻度线
theme(panel.border = element_blank()) + ## 删去外层边框
theme(axis.line = element_line(size=1, colour = "black")) ## 再加上坐标轴(无刻度、无标签)