观察一下数据格式
data_sleep<-read.csv("F:/data.csv",header=T) sleepfre<-as.character(data_sleep$X3.你的熬夜频率是.) sleepfref<-factor(sleepfre, levels=c("每晚","经常","偶尔","几乎不"),labels=c("5次及以上","3-4次","1-2次","几乎不"),ordered=T) efficiency<-as.character(data_sleep$X6.熬夜时的学习或者工作效率如何.) efficiency<-factor(efficiency, levels=c("精神亢奋,效率很高","边际收益递减(即熬得越晚效率越低)"),labels=c('整晚精神亢奋','边际收益递减')) feeling_tomorrow<-as.character(data_sleep$X7.熬夜对你第二天的学习工作有多大的影响.) feeling_tomorrow<-factor(feeling_tomorrow,levels=c("熬夜使我快乐","正常,基本没有影响","生理上很疲乏,但是还能撑过去","非常难受,大大降低工作效率"),labels=c("快乐","正常","勉强能坚持工作","工作效率极低")) datasleepn<-data.frame(sleepfref,efficiency,feeling_tomorrow) library(ggplot2) qplot(sleepfre,data =factor(sleepfre, levels=c("每晚","经常","偶尔","几乎不")), geom = "bar")####这句命令运行不了 ###“Error: ggplot2 doesn't know how to deal with data of class factor” ###使用ggplot则没有这个问题!! ###在整理数据之前就转化成因子数据的好处在于可以直接使呈现的bar有一个顺序 ##尽管使用scale_x_discrete(limits=c())也能实现 fre <- ggplot(datasleepn, aes(x=sleepfref))+geom_bar(fill=c("#F46D43","#F46D43","#74ADD1","#74ADD1"),alpha=0.8) motherb<-theme_bw()+theme(panel.grid.major = element_line(colour=NA))+theme(panel.grid.minor = element_blank())+theme(panel.border = element_blank())+theme(axis.ticks.x = element_blank())+theme(axis.line.y = element_line())+theme(axis.title.x = element_blank()) ###scale_y_continuous(expand=c(0,0))让y轴从0开始 fre+scale_y_continuous(expand=c(0,0))+labs(y="人数")+motherb
#############熬夜原因###### causes<-as.character(data_sleep$X5.你通常因为什么原因熬夜.) causes1<-strsplit(causes,split = "┋") causes2<-unlist(causes1) ##看一下结果table(causes2) ###causep<-factor(causes2,levels=c( "玩手机(包括但不限于夜聊、刷微博、看视频等)" ,"学习(包括但不限于赶论文、写作业、准备pre材料等)", "追剧或看电影、娱乐节目等" ,"刷课外书(比如小说)","轰趴刷夜","各种比赛、竞赛等课外活动","班级、组织或社团事务"," 他人干扰 ","其他 "),labels=c("玩手机","学习"," 追剧"," 看小说","开party "," 课外竞赛 ","社团事务 "," 他人干扰 ","其他 ")) ##p<-ggplot(causep,aes(x=causep))+geom_bar() ##上面两行命令无法做图 ##直接使用笨办法 df <- data.frame(table(causes2)) fix(df) ##修改标签名字 p<-ggplot(df,aes(x=熬夜原因,y=频数))+geom_bar(stat = "identity") df
px1<-seq(from=0,to=10,length=10000) py1<-sqrt(5^2-(px1-5)^2) Project1x<-c(px1,rev(px1)) Project1y<-c(py1,-py1) Project1<-data.frame(lon=Project1x,lat=Project1y) Project1$group<-"玩手机" Project1$order<-1:nrow(Project1) Project2<-data.frame(lon=Project1x+13,lat=Project1y) Project2$group<-"学习" Project2$order<-1:nrow(Project2) Project3<-data.frame(lon=Project1x+26,lat=Project1y) Project3$group<-"小说追剧开party" Project3$order<-1:nrow(Project3) Project4<-data.frame(lon=Project1x+39,lat=Project1y) Project4$group<-"课外竞赛、班级事务" Project4$order<-1:nrow(Project4) Project5<-data.frame(lon=Project1x+52,lat=Project1y) Project5$group<-"其他 " Project5$order<-1:nrow(Project5) Project<-rbind(Project1,Project2,Project3,Project4,Project5) ggplot(Project)+geom_path(aes(lon,lat,group=group)) ########################## Proj1<-Project1[,1:2]%>%filter(lat<=1.315789) Proj1[nrow(Proj1)+1,]<-c(8,1.315789) Proj1$group<-"玩手机" Proj1$order<-1:nrow(Proj1) Proj2<-Project2[,1:2]%>%filter(lat<=1) Proj2[nrow(Proj2)+1,]<-c(18,1) Proj2$group<-"学习" Proj2$order<-1:nrow(Proj2) Proj3<-Project3[,1:2]%>%filter(lat<=0.8684211) Proj3[nrow(Proj3)+1,]<-c(40,0.8684211) Proj3$group<-"小说追剧开party" Proj3$order<-1:nrow(Proj3) Proj4<-Project4[,1:2]%>%filter(lat<=0.5789474) Proj4$group<-"课外竞赛、班级事务" Proj4$order<-1:nrow(Proj4) Proj5<-Project5[,1:2]%>%filter(lat<=-2.815789) Proj5$group<-"其他 " Proj5$order<-1:nrow(Proj5) Projdata<-rbind(Proj1,Proj2,Proj3,Proj4,Proj5) labeldata<-data.frame(x=seq(from=5,to=57,length=5),y=c(1.4,1.1,0.95,0.6,-2),label=sprintf("%2d%%",c(63,60,59,56,22))) ############### p1<-ggplot()+ geom_polygon(data=Projdata,aes(x=lon,y=lat,group=group),fill=c("#74ADD1"),col=NA,alpha=0.8)+ geom_path(data=Project,aes(x=lon,y=lat,group=group),col="black",size=1.2)+ geom_text(data=labeldata,aes(x=x,y=y+1,label=label),hjust=.5,size=5)+ scale_x_continuous(breaks=labeldata$x,labels=c("玩手机","学习","小说追剧\n开party","课外竞赛\n班级事务","其他"))+ ylim(-5.5,6)+ theme_minimal()+ theme( panel.grid=element_blank(), axis.title=element_blank(), axis.text.y=element_blank(), axis.text.x = element_text(size = 13,face="bold"), plot.margin = unit(c(.2,.2,1,.2), "cm") ) p1
p <- ggplot(datasleepn, aes(x=efficiency,fill=feeling_tomorrow)) p+geom_bar() peffi<-p+geom_bar(position='stack')+scale_fill_manual(values = rev(c("#F46D43","#FDAE61","#ABD9E9","#74ADD1"))) motherb<-theme_bw()+theme(panel.grid.major = element_line(colour=NA))+theme(panel.grid.minor = element_blank())+theme(panel.border = element_blank())+theme(axis.ticks.x = element_blank())+theme(axis.line.y = element_line()) peffi+scale_y_continuous(expand=c(0,0))+labs(x="熬夜当晚效率",y="人数",fill="熬夜次日状态")+motherb