ggplot -beginning

**********************************************

一、R之ggplot初体验 -- 柱状图

数据类型,表格数据名字new

/////////////////////////////////////////////////////////////

cultivars     TF_family     num_of_gene

IRAT109     MYB/MYB_related     8

IRAT109     WRKY     5

IRAT109     CO-like     3

IRAT109     DBB     3

IRAT109     ERF     3

IRAT109     bZIP     2

IRAT109     Dof     2

IRAT109     G2-like     2

IRAT109     HSF     2

IRAT109     bHLH     1

IRAT109     HD-ZIP     1

IRAT109     NAC     1

IRAT109     Trihelix     1

ZS97B     MYB/MYB_related     7

ZS97B     CO-like     6

ZS97B     HSF     4

ZS97B     ERF     4

ZS97B     WRKY     4

ZS97B     bHLH     3

ZS97B     DBB     2

ZS97B     NAC     1

ZS97B     Dof     1

ZS97B     G2-like     1

ZS97B     HD-ZIP     1

ZS97B     bZIP     1

ZS97B     Trihelix     1

////////////////////////////////////////////////////////////////

cmd:

.......................作图...........................

library(ggplot2)

library(gcookbook) ##为了使用数据

a<-read.table("new",header=T,sep="\t")

ggplot(a,aes(x=TF_family,y=num_of_gene,fill=cultivars))+geom_bar(position="dodge",stat="identity") #new数据集包含两个分类变量,cultivars和num_of_gene,分别将其映射到x和fill

★ 必须使用命令参数position="dodge"将两组条形在水平上分开,否则会输出堆积条形图

作出的图横坐标排序为数据集a在TF_family这个因素的因子水平排序,a$TF_family

..............改变因子水平顺序...................

library(reshape2)

b<-dcast(a,TF_family~cultivars) 取出后俩列数据,并以 TF_family为行名,cultivars为列名

////////////////////////////////////////////////////////////////

TF_family IRAT109 ZS97B

1  MYB/MYB_related       8     7

2          CO-like       3     6

3             WRKY       5     4

4              ERF       3     4

5              HSF       2     4

6              DBB       3     2

7             bHLH       1     3

8             bZIP       2     1

9              Dof       2     1

10         G2-like       2     1

11          HD-ZIP       1     1

12             NAC       1     1

13        Trihelix       1     1

///////////////////////////////////////////////////////////////

b$sum<-b$IRAT109+b$ZS97B ###增加一列因素,且为两品种对应TF家族的基因的和

b<-b[order(-b$sum),]    ##把b数据集的因子sum逆序排序 ****顺序排序b[order(-b$sum),]

a$TF_family<-factor(a$TF_family,levels=as.character(b$TF_family))  ###将数据集a的TF_family 因子水平按数据集b的TF_family因子水平排序  ★b$TF_family为因子水平,需转化字符

........................去背景.............................

p + theme_grey()   ##默认的灰色主题

p + theme_bw()     ##黑白主题

★ theme_set(theme_bw())  将theme_bw()设为默认主题

.......................隐藏横坐标标签......................

p + theme(axis.title.x=element_blank())

.......................修改图例...........................

p + theme(legend.position=" top")  ##指定的参数有top,left,right,bottom 顶部,左,右,底部

p + theme(legend.position=c(.85,.2)) + themme(legend.background = element_rect(fill = "white",colour = "black")) ###添加一个不透明的边界使其与图形分开

p + theme(legend.position=c(1,0),legend.justification=c(1,0))  ###legend.position设置图例坐标,(0,0)原点,左下角,(1,1)右上角 ;legend.justification用来指定图例框的那一部分被放到给定坐标处

p + scale_fill_discrete(limits("t1","t2","t3"))  ###修改图例顺序

p + guides(fill=guide_legend(reverse=TRUE))   ###反转图例的顺序

p + labs(fill = "condition")  ### 修改图例标题为condition

p + guides(fill=guide_legend(title = NULL))  ###移除图例标题

p + scale_fill_discrete(labels = c("a","b","c"))  ###修改图例标签为a,b,c

......................去网格线.............................

p + theme(panel.grid.major = element_blank(),pane1.grid.minor = element_blank())

p + theme(panel.grid.major = element_blank.x(),pane1.grid.minor.x = element_blank())  ###隐藏纵向的网格线 -- 与x轴交汇

p + theme(panel.grid.major = element_blank.y(),pane1.grid.minor.y = element_blank())

p + theme(panel.grid.major=element_line(colour=NA))

..................倾斜横坐标标签..........................

p+theme(axis.text.x  = element_text(angle=90, hjust=1)) ###element_text()是存储文字属性的函数,其内置属性如下:

@@@  family:字体

@@@  face:粗体、斜体等

@@@  size:字体大小

@@@  angle:倾斜角度

@@@  color:颜色

@@@  hjust和vjust  ###标签靠近或远离坐标轴,标签偏移正对刻度位置多少

2、修改字体

其实就算知道可以用theme_text()修改属性,要改起来也是麻烦的事情,因为不知道内置属性的关键字有哪些。比如改字体,直接用"family="宋体""是不会改不了字体的。要提前设置一下字体:

初始化 windowsFonts(myFont1=windowsFont("Times New Roman"),myFont2=windowsFont("华文行楷"))

然后才可以用family来修改字体  Family="myfont1"

3、修改字体粗细

Face可以设置的属性有以下几个:

plain:普通

italic:斜体

bold:粗体

bold.italic:粗体+斜体

4、修改尺寸大小

这个比较简单,用数字代表字体大小即可,普通的字体可以设置为size=8。

5、修改角度

这个也比较简单,用数字代表角度大小,比如上图的angle=45,表示字体逆时针倾斜45°。范围是0-360。

7、修改颜色

用color或者colour都可以修改颜色,颜色用关键字来表示,或者用十六进制的颜色代码来表示。当然最简单的是用关键字来表示颜色,简单明白清楚,但是您可能会发现很难找到ggplot2可以设置的颜色单词。还好经过一番google,找到下图,以后设置颜色不用担心了,有参考了:

8、修改位置

修改位置用下面的参数:

hjust:调整横向位置

vjust:调整纵向位置

vjust=1

上面都设置数字,一般调整0.5左右,可以是负值。

...................设置坐标刻度域值...................

p + scale_y_continuous(limits = c(0,10))  ###将y轴的值域设置为0-10,也可设置为变量因素的最大值 max(a$num_of_gene)

p + ylim(0,10)  ##等价于上一条

p + scale_y_continuous(limits = c(0,10),breaks = c (0,2,4,6,8,10)) ##breaks仅在scale_y_continuous()中管用,设置分度 breaks=seq(0,1,0.1))

p +  coord_fixed(ratio = 1/2)   ###按比例缩放x与y轴,

..................将Y轴的0刻度与x轴相交,不再延伸.....

scale_y_continuous(expand=c(0,0.01))  ##与上一条一起使用,不然对y轴的设置会重置

..................去外框线.............................

p + theme(panel.border = element_blank())  ###去掉外框线

p + theme(axis.line.y = element_line(colour = "black"),axis.line.x = element_line(colour = "black"))  ###加坐标

..................去坐标轴刻度.............................

p + theme(axis.ticks=element_blank(),axis.text.y=element_blank(),axis.text.x=element_blank())

....................柱子显示数值.............................

geom_text(aes(label = num),vjust=-1.5)   ##label=变量 显示需要显示的值,vjust 调整距离

................加标题,居中.........................................

 p + labs(title="1"  ) +theme(plot.title = element_text(hjust=0.5))  

你可能感兴趣的:(ggplot -beginning)