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 作图的更多相关文章

  1. ggplot2作图详解:入门函数qplot

    ggplot2作图详解:入门函数qplot   ggplot2的功能不用我们做广告,因为它的作者Hadley Wickham就说ggplot2是一个强大的作图工具,它可以让你不受现有图形类型的限制,创 ...

  2. ggplot2作图详解7(完):主题(theme)设置

    凡是和数据无关的图形设置内容理论上都可以归为主题类,但考虑到一些内容(如坐标轴)的特殊性,可以允许例外的情况.主题的设置相当繁琐,很容易就占用了 大量的作图时间,应尽量把这些东西简化,把注意力主要放在 ...

  3. ggplot ggplot2 画图

    折线图-ggplot2  http://blog.163.com/yugao1986@126/blog/static/6922850820131161531421/http://blog.sina.c ...

  4. [转]ggplot2用法简单介绍

    简介 ggplot2包是基于Wilkinson在<Grammar of Graphics>一书中所提出的图形语法的具体实现, 这套图形语法把绘图过程归纳为data, transformat ...

  5. ggplot2入门与进阶(上)

    出处:http://www.cellyse.com/how_to_use_gggplot2_part1/ ggplot2包是基于Wilkinson在<Grammar of Graphics> ...

  6. ggplot2绘制Excel所有图

    出处:https://brucezhaor.github.io/blog/2016/06/13/excel2ggplot/#%E5%89%8D%E8%A8%80 目录 前言 1.用到的包 2.数据准备 ...

  7. R语言学习 - 热图绘制heatmap

    生成测试数据 绘图首先需要数据.通过生成一堆的向量,转换为矩阵,得到想要的数据. data <- c(1:6, 6:1, 6:1, 1:6, (6:1)/10, (1:6)/10, (1:6)/ ...

  8. ggplot2 梯度作图

    ggplot2是R语言的绘图包 library('ggplot2') df <- data.frame(var=c("a","b","c&quo ...

  9. 跟我一起ggplot2(1)

    ggplot2 R的作图工具包,可以使用非常简单的语句实现非常复杂漂亮的效果. qplot 加载qplot library(ggplot2) # 测试数据集,ggplot2内置的钻石数据 qplot( ...

随机推荐

  1. JavaBean toString() - 将bean对象打印成字符串

    JavaBean toString方式 https://www.cnblogs.com/thiaoqueen/p/7086195.html //方法一:自动生成 @Override public St ...

  2. VS2017远程调试C#或 Visual Studio 中的 Visual Basic 项目

    来源:远程调试C#或 Visual Studio 中的 Visual Basic 项目 若要调试已部署在另一台计算机的 Visual Studio 应用程序,安装和在其中部署您的应用程序的计算机上运行 ...

  3. C#学习-面向对象

    封装:把客观事物封装成类,并将类内部的实现隐藏,以保证数据的完整性: 比如年龄赋值为负数,就是个例子.当我们把类的字段定义为公共类型时,外部对象可以直接对类内部的数据进行操作,此时无法对这些操作进行一 ...

  4. Git和Github入门教程

    一.常用命令 所有命令前都要加 git,如表中的init是指 git init.点击命令可直接跳转至本文第一次使用的地方.以下命令都在命令行里执行. 1.本地命令 行为 命令 备注 初始化 init ...

  5. ajax一次获取整个表单的数据

    $.ajax({ cache: true, type: "POST", url:ajaxCallUrl, data:$('#yourformid').serialize(),// ...

  6. python之https爬虫出现 SSL: CERTIFICATE_VERIFY_FAILED (同时打开fiddler就会出现)

    1.参考 Py 坑之 CERTIFICATE_VERIFY_FAILED Python 升级到 2.7.9 之后引入了一个新特性,当你urllib.urlopen一个 https 的时候,会验证一次 ...

  7. 【Android】Android apk默认安装位置设置

    在Android工程中,设置apk的默认安装位置 在AndroidManifest.xml文件Manifest标签中添加android:installLocation属性 android:instal ...

  8. 1900型USB接口扫描枪设置虚拟串口模式提升扫描速度

    在使用扫描枪的过程中,发现扫描二维码速度比较慢,不到100个字符,花了大概2-3秒的时间才完成显示,这个速度不能忍受啊.通过度娘,说是可以将USB键盘模式接收字符转换成虚拟串口接收,这样可以大大提高速 ...

  9. Coolpy开源项目简介

    1.Coolpy初识 基于ARDUINO的迷你操作系统.只需一个ARDUINO主板+Ethernet Shield即可运行.成本低,Coolpy主件以目前淘宝价只需要76元人民币. 2.Coolpy能 ...

  10. Apache ActiveMQ 远程代码执行漏洞 (CVE-2016-3088)案例分析

    部署ActiveMQ运行环境 在linux上部署apache-activemq-5.10.0-bin.tar.gz 通过tar -zxvf  apache-activemq-5.10.0-bin.ta ...