R语言ggplot2包学习笔记
声明
本系列是跟着《R数据科学》来学习的。
aes内外使用color的差别
ggplot2自带的数据框
> 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 : chr "f" "f" "f" "f" ...$ 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 : chr "p" "p" "p" "p" ...$ class : chr "compact" "compact" "compact" "compact" ...
绘图:
> ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color=class))
#color也可替换为shape,alpha,size。
将color=class放在aes外面时会报错。
color="red"时得到下图
> ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy),color="red")
在这里注意一个color的别样用法:
> ggplot(mpg)+geom_point(aes(x=displ,y=hwy,color=displ>5))
分面图
常用函数 facet_wrap(),facet_grid()
通过一个变量分图:
> ggplot(data = mpg) +geom_point(mapping = aes(x = displ, y = hwy)) +facet_wrap(~ class, nrow = 2)
通过两个变量分图:
> ggplot(data = mpg) +geom_point(mapping = aes(x = displ, y = hwy)) +facet_grid(drv ~ cyl)
几何对象
平滑曲线
ggplot(data = mpg) +geom_smooth(mapping = aes(x = displ, y = hwy))
去掉曲线周围的置信区间
ggplot(mpg)+stat_smooth(aes(x=displ,y=hwy),se=FALSE)
曲线按照drv分组
ggplot(data=mpg)+geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
注意group的用法
#group分组不产生图例
ggplot(mpg)+geom_smooth(aes(x=displ,y=hwy,group=drv),se=FALSE)
若用颜色来分组,与之对应的语句是:
#要使用show.legend=FALSE来消除图例
ggplot(mpg)+geom_smooth(aes(x=displ,y=hwy,color=drv),show.legends=FALSE,se=FALSE)
一张图中展现多个几何图像
ggplot(data = mpg) +geom_point(mapping = aes(x = displ, y = hwy)) +geom_smooth(mapping = aes(x = displ, y = hwy))
#这样写有点麻烦,可以将aes放在ggplot中
ggplot(data = mpg,mapping=aes(x=displ,y=hwy)) +geom_point() +geom_smooth()
ggplot(data = mpg,mapping=aes(x=displ,y=hwy)) +geom_point(aes(color=class)) +geom_smooth()
不同的图层也可指定不同的数据
library(dplyr)
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +geom_point(mapping = aes(color = class)) +geom_smooth(data = filter(mpg, class == "subcompact"), #该图层的数据只选择class为subcompact的车 se = FALSE)
统计变换
使用ggplot2中自带的数据集diamonds,先查看一下该数据集:
> str(diamonds)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 53940 obs. of 10 variables:$ carat : num 0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...$ cut : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...$ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...$ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...$ depth : num 61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...$ table : num 55 61 65 58 58 57 57 55 61 61 ...$ price : int 326 326 327 334 335 336 336 337 337 338 ...$ x : num 3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...$ y : num 3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...$ z : num 2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...> table(diamonds$cut)Fair Good Very Good Premium Ideal 1610 4906 12082 13791 21551
做一个条形图:
ggplot(diamonds)+geom_bar(aes(x=cut))
条形图中的cut很好理解,就是来自数据集中的一个分类变量,但是count是从哪里来的呢?其实,是geom_bar对数据集进行了一个count统计变换,就是说它分别数了下cut的各个分类变量对应的数量。
在使用?geom_bar时我们可以看到:
Usage:
geom_bar(mapping = NULL, data = NULL, stat = "count",position = "stack", ..., width = NULL, binwidth = NULL,na.rm = FALSE, show.legend = NA, inherit.aes = TRUE)#stat="count"就表示geom_stat是进行了count统计变换的,而之前的geom_point进行 的是identity统计变换,其意思是一个x对应一个y。
一般来说条形图也可以这样画:
> library(dplyr)
> demo <- tribble(~a, ~b,"bar_1", 20,"bar_2", 30,"bar_3", 40
)> demo
# A tibble: 3 x 2a b<chr> <dbl>
1 bar_1 20
2 bar_2 30
3 bar_3 40
> ggplot(demo)+geom_bar(aes(x=a,y=b),stat = "identity")
如果要画展示比例的条形图:
ggplot(data = diamonds) +geom_bar(mapping = aes(x = cut, y = ..prop..,group=1))
注意一点,这里如果不加上group=1,那么cut的每个类别就会各自为政,画出来的图是这样的:
ggplot(data = diamonds) +geom_bar(mapping = aes(x = cut, y = ..prop..))
R语言ggplot2包学习笔记相关推荐
- R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
出处:AI入门学习 dplyr包主要用于数据清洗和整理,主要功能有:行选择.列选择.统计汇总.窗口函数.数据框交集等是非常高效.友好的数据处理包,学清楚了,基本上数据能随意玩弄,对的,随意玩弄,简直大 ...
- 【转载】R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)
出处:AI入门学习 dplyr包介绍 dplyr包主要用于数据清洗和整理,主要功能有:行选择.列选择.统计汇总.窗口函数.数据框交集等是非常高效.友好的数据处理包,学清楚了,基本上数据能随意玩弄,对的 ...
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...
- R语言与机器学习学习笔记(分类算法)
转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...
- [置顶]R语言 ggplot2包
R语言 ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图 ...
- R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)
R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框.竖向文本框) 目录
- R语言ggplot2包和lattice包可视化改变x轴和y轴的显示位置实战
R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战 目录 R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战
- R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve
R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function curve 目录 R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function cur ...
- R语言ggplot2包旋转(Rotate)可视化图像轴标签实战
R语言ggplot2包旋转(Rotate)可视化图像轴标签实战 目录 R语言ggplot2包旋转(Rotate)可视化图像轴标签实战
最新文章
- iphone 常用预编译代码
- STM32的独立看门狗(IWDG)看门狗时间计算
- docker run 原理
- 前端学习(2455):layout处理
- python远程控制电脑_python如何实现远程控制电脑(结合微信)
- 计算机视觉工作项目方案设计,机器视觉(项目方案设计案例)47.pdf
- vmVare使用NAT模式-配置详情
- pwnable.tw---start
- PTES_Technical_Guidelines(渗透测试执行标准)
- linux可以用tab键,linux下tab键在命令行情况下的强大
- WireShark和Fidder进行网络抓包并对协议进行验证
- bcdedit添加linux引导,利用Bcdedit创建Linux系统引导
- 打印机服务器属性添加哪个文件,如何设置打印机服务器属性如何找到打印机服务器属性...
- 6 数据库设计:实体-联系方法
- 陈平 教授的演讲(经济学家)
- esxi-linux-lvm磁盘扩容
- typeof 与 instanceof 的使用和区别
- 日语二级语法汇总(part4/16)
- 免费下载word简历模板的网站
- 有人通过这份面试题拿到了蚂蚁金服的offer!牛逼!
热门文章
- UI入门必读!完整的UI设计学习流程是怎样的?
- 计算机网络中传输速率 带宽 吞吐量三者的区别
- 乐乐的计算题目+题解
- [CTSC2010]珠宝商
- 黑暗星空中的秘密——《黑暗森林》简评
- pmp练习题及其答案
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
- 微信小程序-将时间转换成几秒前 几分钟前 几小时前 几天前等时间格式
- java获得指定时间的前几天或后几天是哪一天
- 超阅读:数码时代的文本变革