R语言(ggplot2绘图)

原文链接:https://wklchris.github.io/R-ggplot2.html

ggplot2 的语法与 R 原生的语法并不统一,但是熟悉起来也并不复杂。它主要通过“+”连接多个绘图函数,同时允许将绘图结果赋值给其他对象,因此使用起来更加灵活。

ggplot2 最为人称道的一点是美观性;部分用户学习 R 甚至仅仅为了用 ggplot2 画出更好看的图像。

注:ggplot2 官方的函数索引教程在 http://docs.ggplot2.org/current/。本文的部分例子取自官方索引。

library(ggplot2)

基础

加载了 ggplot2 包后,里面自带了一个 mpg 数据集,共 234 条观测,是有关车辆燃料的。11 个变量如下:

  • 制造商:manufacturer

  • 模具型号:model

  • 排放量:displ (engine displacement, in litres)

  • 年份:year

  • 发动机数量:cyl (number of cylinders)

  • 变速器形式:trans (type of transmission)

  • 驱动形式:drv (f = front-wheel drive, r = rear wheel drive, 4 = 4wd)

  • 每加仑城市行驶距离:cty (city miles per gallon)

  • 每加仑公路行驶距离:hwy (highway miles per gallon)

  • 燃料:fl (e: ethenol E85, d: diesel, r: regular, p: premium, c: CNG)

  • 车辆类型:class

这里将主要利用这个数据集进行绘图。

mpg$drv <- as.factor(mpg$drv)mpg$fl <- as.factor(mpg$fl)mpg$class <- as.factor(mpg$class)str(mpg)
Classes 'tbl_df', 'tbl' and 'data.frame':	234 obs. of  11 variables:$ manufacturer: chr  "audi" "audi" "audi" "audi" ...$ model       : chr  "a4" "a4" "a4" "a4" ...$ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...$ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...$ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...$ trans       : chr  "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...$ drv         : Factor w/ 3 levels "4","f","r": 2 2 2 2 2 2 2 1 1 1 ...$ cty         : int  18 21 20 21 16 18 18 18 16 20 ...$ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...$ fl          : Factor w/ 5 levels "c","d","e","p",..: 4 4 4 4 4 4 4 4 4 4 ...$ class       : Factor w/ 7 levels "2seater","compact",..: 2 2 2 2 2 2 2 2 2 2 ...

先来看一个简单的例子:

g1 <- ggplot(mpg, aes(x=class))

上面这个例子不会输出任何结果。函数 ggplot() 的作用仅仅是指定一些全图适用的参数,比如绘图使用的数据集、x/y 轴将使用的列(上面用 aes 参数指定了)、分组、颜色等等。ggplot2 绘图分为几个类似图层的概念:

  1. setup: 指定初始化参数,一般是 ggplot() 函数。

  2. geometries:图形层。即绘图的主题,一般是以 geom_ 开头的命令,比如 geom_bar()

  3. labels:标签层,图像的 x/y 轴刻度,以及轴标题、图像总标题。

  4. themes:主题层。包括图像的图例、字体、配色等等。

  5. faceting:图形的分组控制命令。

图像必须有图形层才能显示主体,例如:

g1 + geom_bar()  # 注意到赋值的对象直接可以使用在“+”运算中

640?wx_fmt=png

或许对于 ggplot() 函数与其 aes 参数还有诸多不解之处,在下面将逐渐提到。我们常用的 aes 参数有:

  • x= / y= :这是基本参数。

  • fill= / color= :一般指定一个因子,让 ggplot2 自动根据因子的水平数分配颜色并绘图。

  • shape= :类似上,不过是自动分配点样式。

绘图命令

条形图:geom_bar()

上面给出了很简单的一个条形图的例子,下面展示更多的用法:

纵轴数值:aes(stat=)

默认纵轴是 x 轴上各离散类的计数(Count),对应的默认参数是 geom_bar(stat="count")。如果想用其他值代替,需要在 ggplot() 中指定 aes(y=) 参数,并且在条形图函数中改动为 geom_bar(stat="identity")

# 以各类内部的排放量作为对应的 y 值,进行累加ggplot(mpg, aes(x=class, y=displ)) +geom_bar(stat="identity")

640?wx_fmt=png

权重:aes(weight=)

下面的语句完成了同样的任务,只不过权重相当于使用了乘法。

# 权重。计算每个 class 内的排放总量ggplot(mpg, aes(class)) +geom_bar(aes(weight=displ))

640?wx_fmt=png

填充:aes(fill=)

# 每个 class 下,按照 drv 的水平(三个)分别计数ggplot(mpg, aes(class)) +geom_bar(aes(fill=drv))

640?wx_fmt=png

并列 / 等高:geom_bar(position=)

默认的参数是 position=stack

ggplot(mpg, aes(class)) +geom_bar(aes(fill=drv), position="dodge")

640?wx_fmt=png

ggplot(mpg, aes(class)) +geom_bar(aes(fill=drv), position="fill")

640?wx_fmt=png

箱形图:geom_boxplot()

ggplot(mpg, aes(class, hwy)) + geom_boxplot(varwidth = TRUE)

640?wx_fmt=png

箱形图主题用 fill 参数指定填充颜色,color 参数指定边框颜色。

对于箱形图外侧的异常点,可以用 outlier 开头的参数进行控制。以下是它们的默认值:

  • outlier.shape = 19 点样式

  • outlier.size = 1.5 点大小

  • outlier.stroke = 0.5 边线宽

  • outlier.color = NULL 边线颜色

  • outlier.fill 填充颜色(需要点样式支持)

ggplot(mpg, aes(class, hwy)) + geom_boxplot(fill = "white", color = "darkgreen", outlier.shape=21, outlier.size=4, outlier.stroke = 1,outlier.color = "blue", outlier.fill = "orange")

640?wx_fmt=png

# 并列箱形图的画法。注意只有 subcompact 类型的车辆有三种 drv 数据ggplot(mpg, aes(class, hwy)) + geom_boxplot(aes(color = drv), fill="white")

640?wx_fmt=png

散点图:geom_point()

最简单的一类图像。

# 根据驱动方式,填充不同颜色;根据发动机数量,选择不同点大小。# 在数据量大或有重复点时,更改 alpha 值是不错的选择ggplot(mpg, aes(cty, hwy)) +geom_point(aes(color = drv, size=cyl), shape=19, alpha=0.5)

640?wx_fmt=png

折线图:geom_line()

dt <- data.frame(Data = 1:40, x.value = rep(paste("X", 11:30, sep=""), 2),categ = c(rep("Categ 1", 20), rep("Categ 2", 20)))# 若不指定 group,无法用离散数据作为 x 轴来正确作图# 有时候可以通过 group=1 来强制连接所有的点成线ggplot(dt, aes(x=x.value, y=Data, group=categ, color=categ)) +geom_line()

640?wx_fmt=png

直方图:geom_histogram()

参数 bins 指定组的个数, binwidth 则指定每个组的宽度。

ggplot(mpg, aes(cty, fill=drv)) + geom_histogram(bins=20)

640?wx_fmt=png

ggplot(mpg, aes(cty, fill=drv)) + geom_histogram(binwidth=2.5)

640?wx_fmt=png

矩形图:geom_rect() / geom_tile()

两者功能相同,但参数有区别。前者指定 xmin/xmax/ymin/ymax 四个角点,后者指定矩形中心坐标 x,y 以及矩形的宽与高 width/height。

dt <- data.frame(x=1:5, y=(6:10)/10, w=rep(2, 5), h=rep(0.08, 5), z=factor(c(1,1,2,3,2)))ggplot(dt, aes(x, y)) +geom_tile(aes(fill=z))

640?wx_fmt=png

ggplot(dt, aes(x, y, width = w, height = h)) +geom_tile(aes(fill=z))

640?wx_fmt=png

# 改用 geom_rect 绘制ggplot(dt, aes(xmin = x - w / 2, xmax = x + w / 2, ymin = y - h / 2, ymax = y + h / 2, width = w, height = h)) +geom_rect()

640?wx_fmt=png

坐标轴与图例命令

主题命令:theme()

部分功能也可以由 guide() 命令代完成。

其他

坐标轴翻转:coord_flip()

640?wx_fmt=jpeg

猜你可能喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/51138.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言绘图——实用篇 ggplot2绘图

文章目录 R语言绘图——实用篇 ggplot2绘图绘制等值线图相关如何绘制等值线图插值&#xff0c;平滑插值插值&#xff0c;缺失值插值色条(色阶)划分图例的色条(色阶)修改&#xff0c;合理的参数值选用图例的色条(色阶)修改&#xff0c;刻度线修改无效或不显示的问题 地图绘制相关…

R语言ggplot绘图

一、R语言ggplot2绘折线图 读取文件放置的位置&#xff0c;赋予数组名称 library(ggplot2) setwd("E:\\Buffer\\My work\\ggplot_data") diameter <- read.csv("0.031_0.062_ggplot_try.csv", stringsAsFactors FALSE)看看数组里的各种内容 class(d…

R语言基础画图/绘图/作图

R语言基础画图 R语言免费且开源&#xff0c;其强大和自由的画图功能&#xff0c;深受广大学生和可视化工作人员喜爱&#xff0c;这篇文章对如何使用R语言作基本的图形&#xff0c;如直方图&#xff0c;点图&#xff0c;饼状图以及箱线图进行简单介绍。 0 结构 每种图形构成一…

R语言ggplot2绘图

R语言绘图之ggplot2 一.绘图的基本要素1.图形映射2.分面&#xff1a;3.添加平滑曲线 二.绘制条形图设置坐标抽格式 一.绘图的基本要素 首先载入tidyverse包 install.packages("tidyverse") library(tidyverse)​​​​这一行代码加载了tidyverse的核心R包。在几乎所…

R语言---ggplot绘图

散点图 堆积柱形图 library(ggplot2)ggplot(mtcars,aes(mpg,wt))geom_point()簇状柱形图 library(ggplot2) ggplot(mtcars,aes(factor(cyl),fillfactor(am)))geom_bar()直方图 密度图 library(ggplot) ggplot(mtcars,aes(factor(cyl),fillfactor(am)))geom_bar(position&qu…

R语言绘图基础

目录 一、R语言的基本绘图函数 1、高级绘图函数 &#xff08;1&#xff09;plot函数 &#xff08;2&#xff09;其他高级绘图函数 2、低级绘图函数 二、图形参数与图形控制 1、绘图参数 2、图形控制 3、图形颜色 &#xff08;1&#xff09;颜色名称 &#xff08;2&#…

R语言绘图

画图例子 R Graph Cookbook例子 From&#xff1a;http://www.dataguru.cn/article-1766-1.html 今天突然找到一本专门教授R语言绘图的书&#xff0c;R Graph Cookbook&#xff0c;发现还不错。当初喜欢上R语言就是因为它绘图特别好看。下面把这本书的内容&#xff0c;经过我学…

小米手机通用面具安装,root获取

小米手机通用面具安装,root获取 第一篇 环境准备,解锁手机 小米手机,红米手机通用面具安装方法 一 材料准备 电脑一部,没有的朋友可以去网吧小米或红米手机一部,需登录账号7天以上,可以解锁数据线一条,需要能传数据 二 解锁手机 小米有专门的解锁工具,我就不将其下载下来另存…

ADB的安装和使用教程,小米手机连接adb实例演示

首先我们需要下载 adb 的程序包&#xff0c;只要 1M 就好了。也可以通过安装 android sdk 等工具间接安装&#xff0c;可以自行百度。 小蓝枣的资源仓库&#xff0c;提取码: p8h1 adb 的安装 步骤一&#xff1a; 下载后找个位置把它解压一下。 步骤二&#xff1a; 然后把压缩…

android开发:小米手机开发时非要sim卡才能调试怎么办?

问题&#xff1a; 公司新的测试机是小米2s&#xff0c;但是到了安装调试包时&#xff0c;总是安装失败&#xff0c;不管是打开开发者模式&#xff0c;还是启动或者禁止mui优化功能&#xff0c;都一直出现安装不可用&#xff0c;后来往上查了下&#xff0c;是因为小米系统包稳定…

Mobile - 小米手机如何开通应用分身?应用多开?

有时候办公需要使用多个账号&#xff0c;切换多个应用不停地切换很麻烦&#xff0c;那么&#xff0c;怎么让应用多开&#xff0c;同时在一部手机上使用多个相同的应用呢&#xff1f; 工具 / 原料 小米手机 方法 / 步骤 首先打开小米手机的“设置”&#xff0c;向下滑动&#…

小米手机开发者选项打开usb安装需要SIM卡解决办法

前言 最近在做一些安卓的开发&#xff0c;想用之前用过的小米8做测试 但是打开usb调试的usb安装之后却显示需要插入SIM卡 搜索了一下原因&#xff0c;可能是防止黄牛买来装一大堆第三方APP上去然后打包二次销售&#xff0c;影响消费者 解决办法 不用特意去办一张卡&#x…

MIUI 强制跳过 关闭 打开 小米手机 USB安装 USB安全 USB安全设置 应用确认

MIUI 强制跳过 关闭 打开 小米手机 USB安装 USB安全 USB安全设置 应用确认 一、背景和结论 众所周知&#xff0c;小米手机开启 USB 安装功能&#xff0c;需要插入 SIM 卡登陆、需要登小米账号。我这台手机已root&#xff0c;懒得登陆了&#xff0c;就准备通过修改文件的方式来…

小米手机安装 Charles 证书

1、准备工作 首先电脑安装 Charles&#xff08;这个不教&#xff09;&#xff1b; 准备一台小米手机&#xff08;自备&#xff0c;不送&#xff09;&#xff1b; 2、charles 设置代理端口 打开 Charles 的 Proxy > Proxy Settings…&#xff1b;设置代理端口为&#xff1…

小米手机 samba_神仙手机软件!每个都是手机之必备APP!!

大家好,我是越越热爱不止,分享继续,感谢观看。 1.随手存盒 随手存盒是一款可以帮助用户快速找到想要的文件。 它可以一键查看各个平台接收的文件内容,相当于一个文件中转站,并且可以实现不同平台之间的自由传送; 其次此款软件还附带了“电脑管理文件+快传”功能,在同一…

论文的开题报告是什么样的?

马上就要到毕业季了&#xff0c;许多小伙伴开始着手写论文&#xff0c;但在此之前要先把开题报告搞定才行。其实开题报告相比论文而言要简单很多&#xff0c;但对于从未写过开题报告的同学却不知道从哪里下手。下面就为大家介绍一下一份完整的开题报告到底长什么样子&#xff0…

毕业设计的开题报告怎么写?

本文将事无巨细地为你介绍毕业论文开题报告的写法&#xff0c;让你看完就有灵感&#xff0c;能立马上手写出一篇开题报告来&#xff0c;建议点赞收藏哦。 首先&#xff0c;你得知道为什么要写开题报告。开题报告就像是你论文写作的导航软件&#xff0c;帮你确认论文的起点、途径…

论文开题报告的研究基础怎么写?

紧张又充实的大学生活即将结束&#xff0c;大学生们又开始做毕业设计了&#xff0c;而做毕业设计之前指导老师都会要求先写好开题报告&#xff0c;想必大家像我一样在写开题报告时就会有疑惑了&#xff1a;“哎&#xff0c;什么是研究基础&#xff0c;这个怎么写啊?” 不急&am…

开题报告中拟解决的主要问题怎么写?

在研究生求学阶段&#xff0c;学位论文质量的高低是衡量研究生培养质量的重要标志&#xff0c;而论文质量的高低&#xff0c;很大程度上取决于论文开题报告的内容的细致程度。从论文的选题&#xff0c;到研究内容与措施的探讨及最后开题报告的撰写&#xff0c;三者环环相扣&…

开题报告里的基本内容写什么,预期效果又怎么写?

是不是在找开题报告的模板&#xff1f;逮住就别走啦&#xff0c;这一篇帮你一网打尽&#xff01; 一定教会你一个晚上搞定你的开题报告&#xff01; 不仅如此&#xff0c;这篇看完&#xff0c;对于你未来整个论文初稿也会提供一些准确的思路哦~ 多说无益&#xff0c;快来一起…