声明

本系列是跟着《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包学习笔记相关推荐

  1. R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)

    出处:AI入门学习 dplyr包主要用于数据清洗和整理,主要功能有:行选择.列选择.统计汇总.窗口函数.数据框交集等是非常高效.友好的数据处理包,学清楚了,基本上数据能随意玩弄,对的,随意玩弄,简直大 ...

  2. 【转载】R语言dplyr包学习笔记(吐血整理宇宙无敌详细版)

    出处:AI入门学习 dplyr包介绍 dplyr包主要用于数据清洗和整理,主要功能有:行选择.列选择.统计汇总.窗口函数.数据框交集等是非常高效.友好的数据处理包,学清楚了,基本上数据能随意玩弄,对的 ...

  3. 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)

    学习者:骆栢维 题目来源:生信基石之R语言 中级10 个题目:http://www.bio-info-trainee.com/3750.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  4. R语言与机器学习学习笔记(分类算法)

    转载自:http://www.itongji.cn/article/0P534092014.html 人工神经网络(ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的数学模型或计算模型.神经 ...

  5. [置顶]R语言 ggplot2包

    R语言  ggplot2包的学习 分析数据要做的第一件事情,就是观察它.对于每个变量,哪些值是最常见的?值域是大是小?是否有异常观测? ggplot2图形之基本语法: ggplot2的核心理念是将绘图 ...

  6. R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)

    R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框.竖向文本框) 目录

  7. R语言ggplot2包和lattice包可视化改变x轴和y轴的显示位置实战

    R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战 目录 R语言ggplot2包和lattice包可视化改变.自定义x轴和y轴的显示位置实战

  8. R语言ggplot2包以及lattice包可视化方程、函数的曲线实战:function curve

    R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function curve 目录 R语言ggplot2包以及lattice包可视化方程.函数的曲线实战:function cur ...

  9. R语言ggplot2包旋转(Rotate)可视化图像轴标签实战

    R语言ggplot2包旋转(Rotate)可视化图像轴标签实战 目录 R语言ggplot2包旋转(Rotate)可视化图像轴标签实战

最新文章

  1. iphone 常用预编译代码
  2. STM32的独立看门狗(IWDG)看门狗时间计算
  3. docker run 原理
  4. 前端学习(2455):layout处理
  5. python远程控制电脑_python如何实现远程控制电脑(结合微信)
  6. 计算机视觉工作项目方案设计,机器视觉(项目方案设计案例)47.pdf
  7. vmVare使用NAT模式-配置详情
  8. pwnable.tw---start
  9. PTES_Technical_Guidelines(渗透测试执行标准)
  10. linux可以用tab键,linux下tab键在命令行情况下的强大
  11. WireShark和Fidder进行网络抓包并对协议进行验证
  12. bcdedit添加linux引导,利用Bcdedit创建Linux系统引导
  13. 打印机服务器属性添加哪个文件,如何设置打印机服务器属性如何找到打印机服务器属性...
  14. 6 数据库设计:实体-联系方法
  15. 陈平 教授的演讲(经济学家)
  16. esxi-linux-lvm磁盘扩容
  17. typeof 与 instanceof 的使用和区别
  18. 日语二级语法汇总(part4/16)
  19. 免费下载word简历模板的网站
  20. 有人通过这份面试题拿到了蚂蚁金服的offer!牛逼!

热门文章

  1. UI入门必读!完整的UI设计学习流程是怎样的?
  2. 计算机网络中传输速率 带宽 吞吐量三者的区别
  3. 乐乐的计算题目+题解
  4. [CTSC2010]珠宝商
  5. 黑暗星空中的秘密——《黑暗森林》简评
  6. pmp练习题及其答案
  7. 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
  8. 微信小程序-将时间转换成几秒前 几分钟前 几小时前 几天前等时间格式
  9. java获得指定时间的前几天或后几天是哪一天
  10. 超阅读:数码时代的文本变革