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( ...
随机推荐
- 如何保证Redis的高并发
单机的redis几乎不太可能说QPS超过10万+,一般在几万. 除非一些特殊情况,比如你的机器性能特别好,配置特别高,物理机,维护做的特别好,而且你的整体的操作不是太复杂. Redis通过主从架构,实 ...
- webpack学习笔记--配置output
Output output 配置如何输出最终想要的代码. output 是一个 object ,里面包含一系列配置项,下面分别介绍它们. filename output.filename 配置 ...
- EF批量插入数据(Z.EntityFramework.Extensions)
EF用原生的插入数据方法DbSet.ADD()和 DbSet.AddRange()都很慢.所以要做大型的批量插入只能另选它法. 1.Nugget 2.代码 using EF6._0Test.EF; u ...
- Linux(CentOS7)安装Tomcat
概述 Tomcat是运行Jsp文件的容器服务,能够处理URL请求,类似于IIS.相对于IIS,Tomcat可以部署到Linux.Windows.IOS等操作系统.这里主要整理将Tomcat部署到Lin ...
- 【bzoj2131】免费的馅饼 dp+树状数组
题解: 昨天好像做了个几乎一模一样的题目 按照ti排序 |p[i]-p[j]|<=2*(t[i]-t[j]) 然后去绝对值变为三维偏序 发现后两个式子可以推出ti<tj 所以就变成二维偏序 ...
- jdk 生成证书
1.生成客户端的私钥,客户端的证书 1)keytool -genkey -alias clientkey -keystore kclient.keystore -validity 36500 2) ...
- Servlet解决中文乱码问题
request.setCharacterEncoding("UTF-8"); 并且把这句话放在request.getParameter()之前
- 数学模型:3.非监督学习--聚类分析 和K-means聚类
1. 聚类分析 聚类分析(cluster analysis)是一组将研究对象分为相对同质的群组(clusters)的统计分析技术 ---->> 将观测对象的群体按照相似性和相异性进行不同群 ...
- 关系网络数据可视化:3. 案例:公司职员关系图表 & 导演演员关系网络可视化
1. 公司职员关系图表 节点和边界数据 节点是指每个节点本身的数据,代表公司职工的名称:属性(Country).分类(Category)和地区(Region,给每个节点定义的属性数据).文件必须是.c ...
- 【Spring Boot】使用JDBC 获取相关的数据
使用JDBC 获取相关的数据 什么是JDBC Java Database Connectivity 是一种用于执行SQL语句的Java API,与数据库建立连接.发送 操作数据库的语句并处理结果. S ...