峰峦图样例及注释

#代码参考《R语言数据可视化之美-专业图表绘制指南》例4.2.1,主要代码链接参见

#https://github.com/EasyChart/Beautiful-Visualization-with-R,

#在添加了详细的注释基础上,讨论了mydata数据构建的另一种代码
rm(list = ls())
library(ggplot2)
library(RColorBrewer)  

colormap <- colorRampPalette(rev(brewer.pal(11,'Spectral')))(32)
setwd("D:/Program Files/RStudio")
mydata0<-read.csv("Facting_Data.csv",check.names =FALSE)#这里的数据结构是9列数据,第1列为X变量,第2-9列为数据

N<-ncol(mydata0)-1
labels_Y<-colnames(mydata0)[1:N+1]#这里存储了原来的列名
colnames(mydata0)<-c("x",seq(1,N,1))#这里重新定义了mydata0的列名为1-9
mydata<-data.frame(x=numeric(),y=numeric(),variable=character()) #鍒涘缓绌虹殑Data.Frame
for (i in 1:N){
  newdata<-data.frame(spline(mydata0[,1],mydata0[,i+1],n=300,method= "natural"))
  newdata$variable<-colnames(mydata0)[i+1]
  mydata<-rbind(mydata,newdata)
}#mydata有三列数据结构,第1列对应原数据300抽样后的X轴数据,第2列对应原第2-9列数据做300抽样后的数据,故总共数据是
#300*8=2400,第3列对应新的列名

# for (i in 1:N){
#   newdata<-cbind.data.frame(mydata0[,1],mydata0[,i+1])
#   newdata$variable<-colnames(mydata0)[i+1]
#   colnames(newdata)<-c("x","y","variable")
#   mydata<-rbind(mydata,newdata)
# }#这是另一种建立mydata的方法,mydata本身是把原来的数据变成按照自变量,因变量与列名(往往是第二自变量)进行分类
#因此制造mydata的方法不限于一种

Step<-5
mydata$offest<--as.numeric(mydata$variable)*Step
mydata$V1_density_offest<-mydata$y+mydata$offest#mydata多加了一列offset,注意这个值正对着原来的列名,原来的步进就是5
#因此step=5不是随便设计的;mydata$V1_density_offest这一列的算法则是第1列数据-5,第2列数据-10,以此把原来值相互接近的
#数据分开

p<-ggplot()#创建一个空的ggplot
for (i in 1:N){
  p<-p+ geom_linerange(data=mydata[mydata$variable==i,],aes(x=x,ymin=offest,ymax=V1_density_offest,group=variable,color=y),size =1, alpha =1) +
    #对于某个特定的i,data为mydata0对应的那1列对应的300个数据,x轴数据对应mydata的x列,variable=i的这段
    #ymin对应mydata的offest列,ymax=V1_density_offest列,这里注意,因为y列原始数据都为正,因此画出的是相对准确的数据条形图,并且group等于做好了分类
    #size是条形图的粗细,修改size数值可以获得更好的图形表达效果,color是按原始数据来的,所以是y列,alpha为透明度
    geom_line(data=mydata[mydata$variable==i,],aes(x=x, y=V1_density_offest),color="black",size=0.5)
    #绘制上边缘为V1_density_offset的上缘线
}
#ggplot() + 
#  geom_linerange(aes(x=x,ymin=offest,ymax=V1_density_offest,group=variable,color=y),mydata,size =1, alpha =1) +
p+scale_color_gradientn(colours=colormap)+
  #geom_line(aes(x, V1_density_offest,group=variable),mydata,color="black")+
  scale_y_continuous(breaks=seq(-Step*N,-Step,Step),labels=rev(labels_Y))+
  #y的范围是从-40按-5步进,步进到5,标签恢复为原始的从25到60步进
  xlab("Time")+
  ylab("Class")+
  theme(
    panel.background=element_rect(fill="white",colour=NA),
    panel.grid.major.x = element_line(colour = "grey80",size=.25),
    panel.grid.major.y = element_line(colour = "grey60",size=.25),
    axis.line = element_blank(),
    text=element_text(size=13),
    plot.title=element_text(size=15,hjust=.5),
    legend.position="right"
  )#一系列简单的修图设置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值