ggplot2 作图
ggplot2 作图
ggplot2是著名的R语言作图工具包,gg为Grammar of Graphics的缩写,体现了结构化作图的思想。ggplot2根据图层来作图是非常优秀的思想,官方文档在这里
1、数据(data)
ggplot2要求数据集格式是data.frame,指定数据集之后就可以直接查找需要的列
例
library(ggplot2)
# 选择mtcars数据集
ggplot(data = mtcars, mapping = aes(mpg, wt, color = cyl)) +
geom_point()

2、映射(mapping)
映射使用aes()函数实现,是数据集中的数据关联到相应的图形属性过程中一种对应关系。
属性设置放在aes()里面,表示把数据根据某一属性分开处理;如果放在外面,则是统一处理
例
library(ggplot2)
# 离散分组着色数据类型要是factor
ggplot(data = mtcars, mapping = aes(mpg, wt, color = factor(am))) +
geom_point(color = 'blue') # 统一设置颜色

二级映射实现分组
library(ggplot2)
ggplot(mtcars, aes(x = mpg, y = wt, color = factor(gear))) +
geom_point(aes(shape = factor(carb)))

3、几何对象(geom) 与 统计变换(stats)
几何对象可以绘制不同类型的图,形式是gemo_xx
例
library(ggplot2)
ggplot(diamonds, aes(x = clarity, fill = cut)) +
geom_bar(position = "dodge") # 并排排列

4、统计变换(stats)
统计图片中的额外信息,进行一定的计算
例
library(ggplot2)
ggplot(mtcars, aes(x = drat, y = disp, color = factor(gear))) +
stat_sum() # 计数,stat_unique则可以去重

5、标度(scale) 与 坐标(coords)
可以修改坐标轴和图例的参数,作用:
- 修改图例
- 修改图形属性
- 修改坐标轴
例:
library(ggplot2)
ggplot(data = mtcars, aes(wt, mpg, color = qsec, shape = factor(vs))) +
geom_point(size = 3) +
annotate('text', x = 4, y = 25, label = 'text') + # 文本注释
labs(x = 'xx', y = 'yy') + # 添加标题、坐标名
ggtitle('Title') +
geom_vline(xintercept = 3) + # 添加竖线
geom_hline(yintercept = 20) + # 添加水平线
xlim(3, 4) + # 添加范围
scale_x_continuous(breaks = c(3, 3.25, 3.5, 3.75, 4),
labels = c('a', 'b', 'c', 'd', 'e')) + # 修改坐标轴
coord_flip() # 互换坐标轴

7、分面(facet)
即在一个页面上自动摆放多幅图形,是ggplot2非常方便的一个地方,先划分数据集再作图
例
library(ggplot2)
# 单变量分面
ggplot(data = mtcars, aes(wt, mpg)) +
geom_point() +
facet_grid(vs~.) # 根据vs分面
# 双变量分面
ggplot(data = mtcars, aes(wt, mpg)) +
geom_point() +
facet_grid(vs~am) # 根据vs和am分面
# 轴刻度不一致,不同纵(Y)坐标刻度
# scale = 'free'是同时释放x和y轴
ggplot(data = mtcars, aes(wt, mpg)) +
geom_point() +
facet_grid(vs ~., scales = "free_y") # 释放坐标轴

8、主题(theme)
主题不多论述,一班使用ggthemr包会比较省事
不使用ggthemr
library(ggplot2)
small = diamonds[sample(nrow(diamonds), 1000), ]
ggplot(small, aes(x = carat, y = price, shape = cut, colour = color)) +
geom_point() +
scale_y_log10() +
labs(title = 'price vs carat') +
theme(plot.title = element_text(hjust = 0.5)) # 标题居中

使用ggthemr
library(ggplot2)
library(ggthemr)
ggthemr('pale')
small = diamonds[sample(nrow(diamonds), 1000), ]
ggplot(small, aes(x = carat, y = price, shape = cut, colour = color)) +
geom_point() +
scale_y_log10() +
labs(title = 'price vs carat') +
theme(plot.title = element_text(hjust = 0.5)) # 标题居中
ggthemr_reset()

个人感觉配色更好看一些~
ggplot2 作图的更多相关文章
- ggplot2作图详解:入门函数qplot
ggplot2作图详解:入门函数qplot ggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创 ...
- ggplot2作图详解7(完):主题(theme)设置
凡是和数据无关的图形设置内容理论上都可以归为主题类,但考虑到一些内容(如坐标轴)的特殊性,可以允许例外的情况.主题的设置相当繁琐,很容易就占用了 大量的作图时间,应尽量把这些东西简化,把注意力主要放在 ...
- ggplot ggplot2 画图
折线图-ggplot2 http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.c ...
- [转]ggplot2用法简单介绍
简介 ggplot2包是基于Wilkinson在<Grammar of Graphics>一书中所提出的图形语法的具体实现, 这套图形语法把绘图过程归纳为data, transformat ...
- ggplot2入门与进阶(上)
出处:http://www.cellyse.com/how_to_use_gggplot2_part1/ ggplot2包是基于Wilkinson在<Grammar of Graphics> ...
- ggplot2绘制Excel所有图
出处:https://brucezhaor.github.io/blog/2016/06/13/excel2ggplot/#%E5%89%8D%E8%A8%80 目录 前言 1.用到的包 2.数据准备 ...
- R语言学习 - 热图绘制heatmap
生成测试数据 绘图首先需要数据.通过生成一堆的向量,转换为矩阵,得到想要的数据. data <- c(1:6, 6:1, 6:1, 1:6, (6:1)/10, (1:6)/10, (1:6)/ ...
- ggplot2 梯度作图
ggplot2是R语言的绘图包 library('ggplot2') df <- data.frame(var=c("a","b","c&quo ...
- 跟我一起ggplot2(1)
ggplot2 R的作图工具包,可以使用非常简单的语句实现非常复杂漂亮的效果. qplot 加载qplot library(ggplot2) # 测试数据集,ggplot2内置的钻石数据 qplot( ...
随机推荐
- js中匿名函数和回调函数
匿名函数: 通过这种方式定义的函数:(没有名字的函数) 作用:当它不被赋值给变量单独使用的时候 1.将匿名函数作为参数传递给其他函数 2.定义某个匿名函数来执行某些一次性任务 var f = func ...
- MyBatis-Plus工具快速入门
MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...
- (Access denied for user 'root'@'slaver1' (using password: YES))
1.问题描述,启动azkaban的时候报如下所示的错误.之前使用azkaban是root用户,今天使用hadoop用户进行配置和使用,报这个错,说是root连接mysql拒绝了. [hadoop@sl ...
- CentOS命令行向OSS上传文件或文件夹
下载地址:https://helpcdn.aliyun.com/document_detail/50452.html?spm=a2c4g.11186623.4.2.KyQak3 百度云盘:https: ...
- 流程图 Graphviz - Graph Visualization Software
0.目录 1.参考 https://www.processon.com/ 应该值得一试 知乎 用什么软件画流程图? 9款国内外垂直领域的在线作图工具[可代替visio] 程序员必知的七个图形工具 说 ...
- docker-java Docker的java API
docker-java docker-java 是 Docker的 Java 版本API Docker 当前的实现基于 Jersey 2.x 因此 classpath 不兼容老版本的 Jersey 1 ...
- Java程序编译和运行过程之 一个对象的生命之旅(类加载和类加载器)
Java程序从创建到运行要经过两个大步骤 1:源文件(.java)由编译器编译成字节码ByteCode(.class) 2:字节码由Java虚拟机解释并运行 源文件编译成字节码,主要分成两个部分: 1 ...
- P2024 [NOI2001]食物链 并查集
题目描述 动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形.A 吃 B,B 吃 C,C 吃 A. 现有 N 个动物,以 1 - N 编号.每个动物都是 A,B,C 中的一种,但是我 ...
- java生成Excel文件,下载
pom引入poi的maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId> ...
- Java 之 XML
1.XML a.定义:可扩展标记语言 b.用途:现在主要用来以一种格式化的形式来存储数据 c.注意:XML中是区分大小写的 2.DTD a.定义:文档类型定义 b.作用:定义 XML 文档的合法构建模 ...