R语言与偏态、绘图布局和ggplot2

左偏态,负偏态

a <- c(1,2,3,4,5,6,6,7,7,7,8,8,8,8,9,9)
summary(a)
sum(a)/length(a)
Mean <- mean(a)
Median <- median(a)
Mode <- as.numeric(names(table(a)))[which.max(table(a))]
library(fBasics)    
skewness(a)
//kurtosis(a)

Frea <- as.data.frame(table(a))
plot(Frea)
Mean 
Median 
Mode

右偏态,正偏态

b <- c(1,1,2,2,2,2,3,3,3,4,4,5,6,7,8,9)
summary(b)
sum(b)/length(b)
Mean <- mean(b)
Median <- median(b)
Mode <- as.numeric(names(table(b)))[which.max(table(b))]
skewness(b)
Freb <- as.data.frame(table(b))
plot(Freb)
Mean 
Median 
Mode

结论以及总结

中位数始终位于中间,均数最靠近长尾方向

绘图布局尺寸等:

  R绘图所占的区域,被分成两大部分,一是外围边距,一是绘图区域。绘图区域被区分为多个区域,一个细分的绘图区域分为两个部分,一是绘图边距
  外围边距可使用par()函数中的oma来进行设置。
    比如oma=c(4,3,2,1),就是指外围边距分别为下边距:4行,左边距3行,上边距2行,右边距1行。
    很明显这个设置顺序是从x轴开始顺时针方向。这里的行是指可以显示1行普通字体。所以当我们使用mtext中的line参数时,设置的大小就应该是[0,行数)的开区间。
    当我们使用mtext在外围边距上书写内容时,设置mtext中的outer=TRUE即可。

  绘图区域可使用par()函数中的mfrow, mfcol来进行布局。mfrow和mfcol可以使用绘图区域被区分为多个区域。默认值为mfrow(1,1)。
  我们将每一个细分的绘图区域分为两个部分,
    一是绘图边距:绘图边距需要容纳的内容有坐标轴,坐标轴标签,标题。通常来讲,我们都只需要一个x轴,一个y轴,所以在设置时,一般的下边距和左边距都会大一些         。如果多个x轴或者y轴,才考虑将上边距或者右边距放大一些。绘图边距可以使用par()函数中mar来设置。比如mar=c(4,3,2,1),与外围边距的设置           类似,也可以使用mai来设置。mai与mar唯一不同之处在于mai不是以行为单位,而是以inch为单位。

  用mfrow,mfcol只能是矩阵似的布局,如果我们需要简单地实际不规则的布局,使用layout()专门用于布局
   layout(mat, widths = rep(1, ncol(mat)), heights = rep(1,nrow(mat)),respect = FALSE)

    mat就要描述每个图所在的位置,其中1…N-1都必须至少出现过一次。比如有三个图,我们希望的布局是第一排有一个图,第二排有两个图,那么mat<-matrix(c(1,1,2,3), nrow=2, ncol=2, byrow = TRUE);
    widths和heights用来指定每行或者每列的宽度和高度的。

ggplot2绘图模板

####################################
##加载绘图包
  library(ggplot2)
## 读入数据,如果不在当前工作环境下,要添加数据所在的具体路径
  Data01 <- read.table("type01.txt",sep="\t",header=TRUE,stringsAsFactors=FALSE)
  Data02 <- read.table("type02.txt",sep="\t",header=TRUE,stringsAsFactors=FALSE)
##做基本图
  p1 <- ggplot(Data01,aes(x=Type,y=numbers,fill=Type))+geom_bar(stat="identity")
  p2 <- ggplot(Data02,aes(x=relation,y=PATEnumber,fill=type))+geom_bar(stat="identity",width=0.69,position=position_dodge(0.7))
##添加图片标题
   p1 <- p1+ggtitle("A")
   p2 <- p1+ggtitle("B")
##添加坐标轴标签
  p1 <- p1+xlab(" sites types") + ylab("Numbers of sites")
  p2 <- p2+xlab("The types of associations ") + ylab("Numbers of  sites")
##修改坐标刻度标签的项目顺序以及标签
  p1 <- p1+scale_fill_discrete(limits=c("TR","5TR","CS","inter","moter","tron"),labels=c("TR","5TR","CS","inter","moter","tron"))
   p2 <- p2+scale_x_discrete(limits=c("down","mid","up"),labels=c("Up","In","Down"))
##修改图例的标签以及位置
  p1 <- p1+labs(fill="Types")
  p1 <- p1+theme(legend.position=c(0.88,0.8))
   p2 <-guides(fill=FALSE)
   p2 <- p2+theme(legend.position=c(0.88,0.8))
##添加文本注释
   p1 <- p1+annotate("text",x=3,y=4,label="group 1")
   p2 <- p2+annotate("text",x=3,y=4,label="group 2")
##############
###设置图片的字体族、字体大小、颜色,对齐方式、旋转角度
##在Windows下的字体族添加到R语言中,如果采用R自带的字体族可以直接用,这条命名可以注释掉
 windowsFonts(roman=windowsFont("Times New Roman"))
##设置标题
  p1 <- p1+ggtitle("A")+theme(plot.title=element_text(family="roman",face="bold",colour="black",size=14))
  p2 <- p2+theme(plot.title=element_text(family="roman",face="bold",colour="black",size=12))
##设置坐标刻度标签的字体大小等外观
  p1 <- p1+theme(axis.text.x=element_text(family="roman",face="bold",colour="black",size=14,angle=30,hjust=0.5,vjust=1))
  p1+theme(axis.text.y=element_text(family="roman",face="bold",colour="black",size=14))
##设置坐标轴标签文本的外观
  p1 <- p1+theme(axis.title.x=element_blank())
  p1 <- p1+theme(axis.title.y=element_text(family="roman",face="bold",colour="black",size=14))
##设置图例标签和图例标题字体,大小等
  p1 <- p1+theme(legend.title=element_text(family="roman",face="bold",colour="black",size=14))
 p1 <- p1+annotate("text",x=-Inf,y=Inf,label="A",hjust=-.2,vjust=2,family="roman",face="bold",colour="black",size=14)
   p2 <- p2+theme(axis.text.x=element_text(family="roman",face="bold",colour="black",size=14,angle=30,hjust=0.5,vjust=1))
###把两幅图放在一个页面上###保存图形的位置,名称以及格式,分辨率,尺寸
 win.metafile(filename="E:/2016_Bioinfor/Rice/Single_entropy/Tissue_distribute.emf",width=13.5,height=11)
#png(filename="site_distribute.png",width=400,height=400)

library(grid)
##清除当前设备或移动到新的page
grid.newpage()
##用viewport创建视图窗口,并用grid.layout创建布局,同时把布局给视窗
VP <- viewport(layout = grid.layout(2, 1))
##用pushViewport()命令锁定该图层,使之成为目标区域
pushViewport(VP)
#创建布局函数,函数参数是放置图形的位置
vplayout <- function(x, y) viewport(layout.pos.row = x, layout.pos.col = y)
#绘图
  print(p1, vp = vplayout(1, 1))
  print(p2, vp = vplayout(2, 1))
 ##关闭图形设备
 dev.off()

数据归一化

 a <- read.table("C:\\Users\\Administrator\\Desktop\\a.txt")

###应用于矩阵
scale(a,center=TRUE,scale=FALSE)
scale(a,center=TRUE,scale=TRUE)
scale(a,center=FALSE,scale=TRUE)
scale(a, center = FALSE, scale = apply(a, 2, sd, na.rm = TRUE))
###sqrt(sum(x^2)/(n-1))
 maxmin <- function(dat){(dat-min(dat))/(max(dat)-min(dat))}
 apply(a,2,maxmin)

应用于向量
#####
d <- c(100,200,300,400)
###线性函数归一化(Min-Max scaling)线性函数将原始数据线性化的方法转换到[0 1]的范围
##运行R语言的归一化 前提默认是最大值和最小值是不相同的,如果相同,则返回NaN,表示无意义数据
#两种方式到[0 1],
##效益型指标(越大越好型)的隶属函数:
(d-min(d)) /(max(d)-min(d))  
## 成本型指标(越小越好型)的隶属函数:
(max(d)-d) /(max(d)-min(d))
###【-1,1】
(d-min(d)) /(max(d)-min(d)) *(1-(-1))+(-1 )
(d-min(d)) /(max(d)-min(d)) *1+0 
 ###当min=max时 2*(d-min(d)) /((max(d)-min(d))-1)

###中心化,减去均值
scale(d,center=TRUE,scale=FALSE)
d-mean(d)

###0均值归一化方法将原始数据集归一化为均值为0、方差1的数据集
scale(d,center=TRUE,scale=TRUE)
(d-mean(d))/sd(d)
(d-mean(d))/sqrt(sum((d-mean(d))^2)/3)

### x/sqrt(sum(x^2)/(n-1))
scale(d,center=FALSE,scale=TRUE)
 d/sqrt(sum(d^2)/(3))

### x/sd(x)
### 
scale(d,center=FALSE,scale=sd(d))
scale(d,center=1,scale=sd(d))
 d/sd(d)
###对矩阵处理scale(a, center = FALSE, scale = apply(a, 2, sd, na.rm = TRUE))

参考

http://blog.qiubio.com:8080/archives/2395
http://blog.qiubio.com:8080/
http://www.bugman123.com/index.html

blogroll

social