本文转载自:http://www.javaxxz.com/thread-359443-1-1.html
ggplot2包实现了基于语法的、连贯一致的创建图形的系统,由于ggplot2是基于语法创建图形的,这意味着,它由多个小组件构成,通过底层组件可以构造前所未有的图形。ggplot2可以把绘图拆分成多个面板,且能够按照顺序创建多重图形,基本上,无所不能,是R开发人员必学必会的包。
ggplot2图形系统的核心理念是:
把绘图与数据分离,把数据相关的绘图与数据无关的绘图分离;
按图层作图,有利于结构化思维;
具有命令式作图的调整函数,使绘图更具灵活性,绘制出来的图形美观,同时避免繁琐细节。
使用ggplot2包创建图形时,每个图形都是由函数ggplot()创建的,由几何对象来控制绘图,并增加了可读性更高的集合图形选项。
一,初始化图形
使用函数ggplot()初始化图形对象,并指定绘图图形的数据源和变量。
- ggplot(data = NULL, mapping = aes())
复制代码
参数data: 用于指定要用到的数据源;
参数mapping:使用aes()函数指定每个变量的角色,除x和y之外的其他参数,例如,size、color、shape等,必须采用name=value的形式,
常见的图形美学选项是:
color:对点、线和填充区域的边界进行着色
fill:对填充区域着色
alpha:演示的透明度,从透明(0)到不透明(1)
linetype:图案的线条(1=实线、2=虚线、3=点、4=点破折号、5=长破折号、6=双破折号)
size:点的尺寸和线的宽度
shape:点的形状(和par()函数的pch参数相同)
position:绘制条形图和点等对象的位置
binwidth:直方图的宽度
notch:表示方块图是否应该有缺口
sides:地毯图的位置("b"=底部、"l"=左部、"r"=右部、"bl"=左下部,等)
width:箱线图的宽度
group:分组
stroke:
在下面的小节中,使用数据集mtcars作为ggplot的输入:
- library(ggplot2)
- data("mtcars")
复制代码
二,几何对象(geometric)
函数ggplot()可以设置图形,但是没有视觉输出,需要使用一个或多个几何函数向图形中添加几何对象(geometric,简写为geom),包括点(point)、线(line)、条(bar)等,而添加几何图形的格式十分简单,通过符号“+”把几何图形添加到plot中:
例如,使用geom_point()函数输出点状图形,并接收以下美学参数:alpha、colour、fill、group、shape、size和stroke,
- ggplot(data=mtcars, aes(x=wt,y=mpg))+
- geom_point(color="red",size=1,shape=0)
复制代码
在一个图形中,可以绘制多个几个几何图形
- ggplot(data=mtcars, aes(x=wt,y=mpg))+
- geom_point(color="red",size=1,shape=0)+
- geom_smooth(method="lm",color="green",linetype=2)
复制代码
三,主题
主题(Theme)用于控制图形的美学特征,ggplot图形的主题(theme)元素主要有三大类:布局(plot)、面板(panel)和坐标轴(axis),还有两个成分元素附着于面板上,主要包括两类:图例(legend)和带状区域(strip),ggplot2包通过theme()函数来统一控制图形的美学和文本特征,theme()函数的参数如下所示,详细文档请阅读:Modify components of a theme
- theme(line, rect, text, title, aspect.ratio, axis.title, axis.title.x,
- axis.title.x.top, axis.title.y, axis.title.y.right, axis.text, axis.text.x,
- axis.text.x.top, axis.text.y, axis.text.y.right, axis.ticks, axis.ticks.x,
- axis.ticks.y, axis.ticks.length, axis.line, axis.line.x, axis.line.y,
- legend.background, legend.margin, legend.spacing, legend.spacing.x,
- legend.spacing.y, legend.key, legend.key.size, legend.key.height,
- legend.key.width, legend.text, legend.text.align, legend.title,
- legend.title.align, legend.position, legend.direction, legend.justification,
- legend.box, legend.box.just, legend.box.margin, legend.box.background,
- legend.box.spacing, panel.background, panel.border, panel.spacing,
- panel.spacing.x, panel.spacing.y, panel.grid, panel.grid.major,
- panel.grid.minor, panel.grid.major.x, panel.grid.major.y, panel.grid.minor.x,
- panel.grid.minor.y, panel.ontop, plot.background, plot.title, plot.subtitle,
- plot.caption, plot.margin, strip.background, strip.placement, strip.text,
- strip.text.x, strip.text.y, strip.switch.pad.grid, strip.switch.pad.wrap, ...,
- complete = FALSE, validate = TRUE)
-
复制代码
在使用ggplot2包绘制图形时,可以单独定义一个theme对象,然后添加到ggplot中,例如:
- mytheme <-theme(panel.grid.major.x = element_blank(),
- panel.grid.minor.x = element_blank(),
- panel.grid.major.y = element_line(color="lightblue",size =0.1,linetype="solid",lineend="round"),
- panel.grid.minor.y = element_blank(),
- panel.background = element_blank(),
- axis.ticks=element_blank()
- ggplot(data=mtcars, aes(x=wt,y=mpg))+
- geom_point(color="red",size=1,shape=0)+
- mytheme
复制代码
三,坐标(scale)
ggplot2包使用函数scale_x_xxx()和scale_y_xxx()分别控制坐标轴的数据,常用的函数有三个:scale_x_date,scale_x_discrete,scale_y_continuous,其中discrete表示坐标轴的值是可罗列的散列值,而continuous表示是不可罗列的连续值:
- scale_y_continuous(name = waiver(), breaks = waiver(),
- minor_breaks = waiver(), labels = waiver(), limits = NULL,
- expand = waiver(), oob = censor, na.value = NA_real_,
- trans = "identity", position = "bottom", sec.axis = waiver())
复制代码
参数注释:
name:坐标轴上的文字
breaks:间距,如何对坐标轴的值进行间断,如果不设置,那么使用默认值,显示设置:NULL(不间断),数值向量,函数(输入是范围,输出是间距)
minor_breaks :同breaks参数,表示最小的间距
labels:标签,间距的文字显示;数量必须同breaks相同;
limits:数值向量,用于指定坐标轴的最小值和最大值
expand:数值向量,默认值是c(0.05,0),用于指定数据离坐标轴的距离
oob:函数对象,Function that handles limits outside of the scale limits (out of bounds).
na.value :用于替换缺失值的值
trans :指定转化对象,用于产生breaks和labels;
position:指定坐标轴的位置;
sec.axis:指定辅助坐标轴(secondary axis);
例如,x轴是以日期(date)为值的坐标轴,而y轴按照pretty_breaks()函数进行间断,标签按照特定的格式显示:
- library("scales")
-
- ggplot(data=mtcars, aes(x=wt,y=mpg))+
- geom_point(color="red",size=1,shape=0)+
- scale_x_date(date_labels="%Y-%m",date_breaks="1 month")+
- scale_y_continuous(breaks=pretty_breaks(n=3), labels=scales::unit_format("k", 1e-3))
复制代码
在使用函数pretty_breaks()之前,请首先加载scales包;
- install.packages("scales")
复制代码
四,多重图
要同时绘制多个图形,可以使用gridExtra包中的grid.arrange()函数,绘制多重图时,需要定义一个ggplot()的列表,并把列表传递给grid.arrange()函数,在该函数中指定图形的布局(layout)例如:
- library("gridExtra")
-
- gs=list(NULL)
-
- gs[[1]]<-ggplot()
- gs[[2]]<-ggplot()
- gs[[n]]<-ggplot()
-
- grid.arrange(grobs=gs,ncol=1)
复制代码
分享到:
相关推荐
后勤智能管理系统-.. (2).pdf
Markdown.Monster.v2.0.9.0-CRD
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、本项目仅用作交流学习参考,请切勿用于商业用途。
四川大学期末考试试题(开卷).docx
c#入门之实现计算器源码
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
主要需求:3个权限 该系统功能模块主要为三部分,即学生模块、教师模块、管理员模块。 学生模块包括:查看考试安排信息(随机安排就行)、学生 缓考在线申请(教师查看)、在线签订承诺书(学生签字); 教师模块包括:查询监考表、考试违纪学生信息录入; 管理员模块包括:考试时间地点管理、 调整排班信息、信息管理等(主要是增删改查) 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
springboot-基于SpringBoot的小型民营加油站管理系统.zip
framework_all
【Ubuntu】【交叉编译】实现跑马灯并以开发板为服务器通过cgi实现远程控制.html
实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理常用语句管理、常用语句收藏管理、常用语句留言管理、成语学习管理、成语学习收藏管理、成语学习留言管理、字典管理、论坛管理、基础管理、基础收藏管理、基础留言管理、情景学习管理、情景学习收藏管理、情景学习留言管理、诗词学习管理、诗词学习收藏管理、诗词学习留言管理、用户管理、管理员管理等功能。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7
RTMPOSE rtmpose-m-2xb64-210e-mpii-256x256-A5000
jdk-17.0.4.1
户外广告全球市场研究报告:2023年市场规模约为14121.8亿元 在数字时代,户外广告作为传统与现代的交汇点,正以独特的魅力吸引着全球广告主的目光。从繁华都市的霓虹灯到偏远乡村的路牌,户外广告无处不在,以其直观、生动的形式,精准触达消费者的生活与出行场景。然而,在激烈的市场竞争中,如何把握市场趋势,实现精准传播,成为广告主面临的一大挑战。 市场概况 近年来,全球广告市场在经济周期动荡中展现出强大的韧性,不断触及新高度。据QYR最新调研,2023年全球广告市场规模已增至约9044.9亿美元,其中户外广告市场占据了一席之地。作为全球广告市场的重要组成部分,中国广告市场规模同样在快速扩张,2023年市场规模约为14121.8亿元,稳居世界前列。户外广告市场更是表现抢眼,2023年全球户外广告市场规模约为547.8亿美元,中国市场规模则达到约820.5亿元,展现出强劲的增长势头。 技术创新与趋势 随着数字化技术的广泛应用,户外广告的形式和内容不断升级,从传统的平面广告到如今的视频广告,再到未来的智能互动广告,户外广告正逐步走向智能化、个性化。视频广告以其音频视觉双重刺激的特点,通过故事情节、
学生信息管理: 添加学生信息:录入新学生的信息到系统。 修改学生信息:对现有学生信息进行更新和修改。 请假管理: 新增请假记录:记录学生的请假信息。 审批请假:对学生的请假申请进行审批。 请假统计:对请假记录进行统计分析。 申请假统计:可能是对请假申请的统计,可能包括未批准的请假。 成绩管理: 新增成绩:录入学生的成绩信息。 修改成绩:对学生的成绩进行修改。 删除成绩:从系统中移除学生的成绩记录。 家长信息管理: 新增家长信息:录入家长的联系信息。 修改家长信息:更新家长的联系信息。 删除家长信息:移除家长的联系信息。 学业预警管理: 新增学业预警:对可能存在学业问题的学生设置预警。 修改学业预警:更新学业预警信息。 删除学业预警:移除学业预警。 实习管理: 新增实习信息:录入学生的实习信息。 修改实习信息:更新学生的实习信息。 删除实习信息:移除学生的实习信息。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11...
系统实现: 老师信息管理:老师信息的查询管理,可以删除老师信息、修改老师信息、新增老师信息。 学生信息管理:学生信息的查询管理,可以删除学生信息、修改学生信息、新增学生信息。 请假信息管理:学生的学院、专业、班级、请假类型进行条件查询,还可以对请假数据进行修改、审批、驳回、删除等功能,学生可以进行申请请假信息操作等等。 留言信息管理:对学生添加的留言信息进行回复功能,只有管理员和老师可以进行回复。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7
喜来登五星酒店酒店数字客房管理系统.pdf
Python课程设计,含有代码注释,新手也可看懂。毕业设计、期末大作业、课程设计、高分必看,下载下来,简单部署,就可以使用。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。
以下是一个关于VSCode(Visual Studio Code)的资源描述和项目源码的简要介绍: 资源描述 VSCode是一款由微软开发的开源、免费且功能强大的源代码编辑器,它以其轻量级、高效、多语言支持、智能代码补全、内置调试工具、丰富的扩展市场以及跨平台兼容性等特点,赢得了广大开发者的青睐。在资源方面,VSCode提供了详尽的官方文档,涵盖了从安装配置到高级功能的全面指南。此外,互联网上有大量的在线教程、视频教程以及社区论坛和问答网站,如CSDN博客、Stack Overflow等,为开发者提供了丰富的学习资源和交流平台。 项目源码概述 由于VSCode是开源的,其源码可以在GitHub等代码托管平台上找到。VSCode的源码结构清晰,包含了构建脚本、内置插件、App元信息、平台相关静态资源、工具脚本、源码目录等多个部分。其中,源码目录是核心部分,包含了编辑器、工作区、平台支持等多个模块的代码。每个模块都有详细的注释和文档,方便开发者理解和扩展。 VSCode的源码采用了TypeScript语言编写,并使用了Electron框架来构建跨平台桌面应用程序。开发者可以根据自己的
Java系统源码+旅游管理系统 内容概要: 本资源包含了完整的Java前后端源码及说明文档,适用于想要快速搭建并部署Java Web应用程序的开发者、学习者。 技术栈: 后端:Java生态系统,包含Spring Boot、Shiro、MyBatis等,数据库使用Mysql 前端:Vue、Bootstrap、Jquery等 适用场景示例: 1、毕业生希望快速启动一个新的Java Web应用程序。 2、团队寻找一个稳定的模板来加速产品开发周期。 3、教育机构或个人学习者用于教学目的或自学练习。 4、创业公司需要一个可以立即投入使用的MVP(最小可行产品)。