ggplot2_总纲
ggplot2_概述
sunqi
2020/7/31
概述
年初的时候我好像打算对ggplot2进行一个教程,后来因为其他事情耽搁了,今天打开以往的git日志,才发现有这么一个坑(ggplot2初探),虽然现在绘图的包层出不穷,但是ggplot真的是一个基础的绘图包了。
ggplot2 介绍
语法构成
GGPlot2是一个强大而灵活的R包,由HadleyWickham实现, ggplot2中的gg表示Grammar of graphics,ggplot通过使用“语法”来描述图形,基本部分为: plot =data+Aesthetics+Geometry:
data: a data frame aesthetics: 用于表示x和y变量。它也可以用来控制颜色,大小和形状的点,等等 geometry: 几何:对应于图形的类型(柱状图,盒状图,线状图,…)
主要的函数
Plot types |
GGPlot2 functions |
|
---|---|---|
Initialize a ggplot |
ggplot() |
|
Scatter plot |
geom_point() |
|
Box plot |
geom_boxplot() |
|
Violin plot |
geom_violin() |
|
strip chart |
geom_jitter() |
|
Dot plot |
geom_dotplot() |
|
Bar chart |
geom_bar() or geom_col() |
|
Line plot |
geom_line() |
|
Histogram |
geom_histogram() |
|
Density plot |
geom_density() |
|
Error bars |
geom_errorbar() |
|
QQ plot |
stat_qq() |
|
ECDF plot |
stat_ecdf() |
|
Title and axis labels |
labs() |
例子
对iris数据集进行绘制散点图
library(ggplot2)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point()
# 更改点的大小颜色形状
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(size = 1.2, color = "steelblue", shape = 21)
# 添加分组,这里在geom_point中使用aes
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(aes(color = Species, shape = Species))
# Change the default color manually.
# 使用scale_color_manual() 函数更改配色方案
p <- ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point(aes(color = Species, shape = Species))+
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
print(p)
# 更改图例的位置theme
# 上下左右位置left”, “top”, “right”, “bottom”, “none”
p + theme(legend.position = "top")
# 标题和轴标签labs()
p + labs(
title = "Edgar Anderson's Iris Data",
subtitle = "iris is a data frame with 150 cases (rows) and 5 variables",
x = "Sepal Length (cm)", y = "Sepal Width (cm)"
)
# 分面问题Facet
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
# 点图分组
geom_point(aes(color = Species))+
# 添加光滑的曲线和置信区间
geom_smooth(aes(color = Species, fill = Species))+
# 使用facet_wrap函数对数据分面展示
facet_wrap(~Species, ncol = 3, nrow = 1)+
# 添加配色方案
scale_color_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))+
scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07"))
# ggplot theme
# ggplot的默认主题是theme gray(),它是具有灰色背景和白色网格线的主题。
# 更多的主题包括:theme bw()、theme classic()和theme minimal()
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width))+
geom_point()+
theme_classic()
图片的保存
ggplot标准绘图流程
- 打开绘图设置
pdf(“r-graphics.pdf”) svg(“r-graphics.svg”) png(“r-graphics.png”) tiff(“r-graphics.tiff”) jpeg(“r-graphics.jpg”)
- 绘图
- 关闭绘图
dev.off()
例子
导出绘图到pdf文件
# 绘图
library(ggplot2)
myplot1 <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) +
geom_point()
myplot2 <- ggplot(iris, aes(Species, Sepal.Length)) +
geom_boxplot()
# 保存图片到pdf
pdf("ggplot.pdf")
print(myplot1) # Plot 1 --保存到第一页
print(myplot2) # Plot 2 ---保存到第二页
dev.off()
## png
## 2
# 保存png格式
png("myplot.png")
print(myplot1)
dev.off()
## png
## 2
# 绝大多数的时候我用的是ggsave函数
# 1. 建立图形文件
ggplot(mtcars, aes(wt, mpg)) + geom_point()
# 2.1. 保存pdf,这里没有指定保存图形,一般为现在绘图面板中的图形
ggsave("myplot.pdf")
# 2.2 OR save it to png file
ggsave("myplot.png")
结束语
今天是公众号创立以来的第100篇文章,转眼间已经过去这么长时间了,物是人非,再回首,有些人背叛了革命,有些人迷失在了熙熙攘攘的人海,总归是意难平。
未来,希望能够继续完善这个公号,不负年华。
最后,不要温柔走入那良夜。
love&peace
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 给彦女王生成一副蒙太奇画像
- 设计模式~单例模式
- [Bazel]自定义工具链
- async和await的使用总结 ~ 竟然一直用错了c#中的async和await的使用。。
- 全网首发:12306抢票算法大曝光?(十张图搞定)
- 全网首发:12306抢票算法大曝光?(勘误)
- 新一代垃圾回收器ZGC的探索与实践
- Python GUI项目实战(一)登录窗体的设计与实现
- Python GUI项目实战(二)主窗体的界面设计与实现
- Python GUI项目实战(三)实现信息查询功能
- 在 Kubernetes 上使用 Argo 实现 CI/CD
- 微信小程序:授权登录 + 基于token的身份验证详解
- 「最强」Lettuce 已支持 Redis6 客户端缓存
- Go中校验一个字符串是否是有效的JSON字符串
- 在 Vue 中,如何从插槽中发出数据