R-data-sciecne-3

统计变换

geom_bar函数可绘制基本的条形图,diamons数据集是ggplot2内置数据集,包含54000多颗钻石的信息,每颗钻石有price,color等变量
变量观测的思维
Sys.setlocale('LC_ALL','C')

library(tidyverse)
## -- Attaching packages -------------------------------------------------- tidyverse 1.2.1 --
## √ ggplot2 3.1.0     √ purrr   0.2.5
## √ tibble  1.4.2     √ dplyr   0.7.8
## √ tidyr   0.8.2     √ stringr 1.3.1
## √ readr   1.3.1     √ forcats 0.3.0
## -- Conflicts ----------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
#查看diamonds的数据结构
dim(diamonds)
## [1] 53940    10
head(diamonds)
## # A tibble: 6 x 10
##   carat cut       color clarity depth table price     x     y     z
##   <dbl> <ord>     <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl> <dbl>
## 1 0.23  Ideal     E     SI2      61.5    55   326  3.95  3.98  2.43
## 2 0.21  Premium   E     SI1      59.8    61   326  3.89  3.84  2.31
## 3 0.23  Good      E     VS1      56.9    65   327  4.05  4.07  2.31
## 4 0.290 Premium   I     VS2      62.4    58   334  4.2   4.23  2.63
## 5 0.31  Good      J     SI2      63.3    58   335  4.34  4.35  2.75
## 6 0.24  Very Good J     VVS2     62.8    57   336  3.94  3.96  2.48
#将cut变量显示到x轴,y轴显示的是count,但count不是原有变量
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut))
image.png
#绘图时用于计算新数据的算法是stat(statistical transformation)统计变换
#geom_bar实际上对数据进行了转换,返回了count数值,因为stat默认是stat_count
?geom_bar
## starting httpd help server ...
##  done
#通常几何对象函数与统计变换函数可以互换使用
#可以发现以下代码得到的图形与上图是相同的
ggplot(diamonds)+
  stat_count(mapping = aes(x=cut))
image.png
#绘图时用于计算新数据的算法是stat(statistical transformation)统计变换
#geom_bar实际上对数据进行了转换,返回了count数值,因为stat默认是stat_count
?geom_bar
## starting httpd help server ...
##  done
#通常几何对象函数与统计变换函数可以互换使用
#可以发现以下代码得到的图形与上图是相同的
ggplot(diamonds)+
  stat_count(mapping = aes(x=cut))
image.png
#覆盖默认的统计变换,以下将条形高度映射为y轴变量初始值
demo <- tribble(
  ~cut,         ~freq,
  "Fair",       1610,
  "Good",       4906,
  "Very Good",  12082,
  "Premium",    13791,
  "Ideal",      21551
)
demo
## # A tibble: 5 x 2
##   cut        freq
##   <chr>     <dbl>
## 1 Fair       1610
## 2 Good       4906
## 3 Very Good 12082
## 4 Premium   13791
## 5 Ideal     21551
ggplot(data = demo) +
  geom_bar(mapping = aes(x = cut, y = freq), stat = "identity")
image.png
#统计变换生成的变量到图形属性的默认映射,显示一张表示比例的图
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))
image.png
#帮助文件中的Computed variables找出统计变换计算出的变量
#stat_summary为x的每个唯一值计算y值的摘要统计,以下计算的是y的max min midian并展示
ggplot(data = diamonds) + 
  stat_summary(
    mapping = aes(x = cut, y = depth),
    fun.ymin = min,
    fun.ymax = max,
    fun.y = median
  )
image.png
#ggplot2提供20多种统计变换?stat_bin例如获取帮助,在比例条形图中需设定group=1,否则如下
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, y = ..prop..))
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = color, y = ..prop..))
##用color或fill图形属性映射变量上色
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, colour = cut))
##fill显得更有效
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = cut))
#将fill映射到另一个变量,自动堆叠
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity))
##堆叠是由position参数设定的位置调整功能完成的
#position有identity, fill, dodge三种选项
#设置透明度
ggplot(data = diamonds, mapping = aes(x = cut, fill = clarity)) + 
  geom_bar(alpha = 1/5, position = "identity")
#fill=NA完全透明
ggplot(data = diamonds, mapping = aes(x = cut, colour = clarity)) + 
  geom_bar(fill = NA, position = "identity")
#fill堆叠的高度相同,适用于比较各组间的比例
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "fill")
#dodge将每组条形依次并列放置
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
image.png
##重叠点的过绘制,可设置jitter随机抖动,避免网格化排列
ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy), position = "jitter")
#ggplot2还提供快速实现方式geom_jitter()
##坐标系

#coord_flip函数可以交换x-y轴,如下
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot()
#方便的展示为水平箱线图
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + 
  geom_boxplot() +
  coord_flip()
##coord_quickmap()设置地图纵横比,可能对我用处不大,算是了解吧
nz <- map_data("nz")
## 
## Attaching package: 'maps'
## The following object is masked from 'package:purrr':
## 
##     map
ggplot(nz, aes(long, lat, group = group)) +
  geom_polygon(fill = "white", colour = "black")
#类似的
ggplot(nz, aes(long, lat, group = group)) +
  geom_polygon(fill = "white", colour = "black") +
  coord_quickmap()
##coord_polar()使用极坐标系
bar <- ggplot(data = diamonds) + 
  geom_bar(
    mapping = aes(x = cut, fill = cut), 
    show.legend = FALSE,
    width = 1
  ) + 
  theme(aspect.ratio = 1) +
  labs(x = NULL, y = NULL)

bar + coord_flip()
bar + coord_polar()

图形分层语法

得到了ggplot2绘图的7个参数设置
包括
数据data
映射mapping
几何函数geom_
统计变换stat
位置参数position
分面facet
坐标系coord
但绘图时经常不需要所有参数,ggplot2提供很好的默认参数设置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容

  • 使用GGPLOT2包进行数据可视化 Introduction简介 geom_smooth可以用于散点图,拟合一条直...
    一条很闲的咸鱼阅读 958评论 0 0
  • 掂着心灵站在大地上~面朝天空~让思维对着未来绵延 ~~~稳住最初的心~走好最远的路………
    浅秋遗梦阅读 192评论 0 0
  • 赚钱的、正确的操作,不但需要对行情运行方向进行客观正确的判断,更需要不断地跟踪行情发展,并在行情发展过程中根据自己...
    牧股堂阅读 125评论 0 0
  • 不知为何,对于诗作中描述时光岁月的语句,格外敏感,亦觉包裹着朦胧的忧伤。就是喜欢那种委婉含蓄的说辞,给一切留有想象...
    一抹骊歌阅读 177评论 0 0
  • 一些关于跑马撞墙的常识: 大约一半的业余跑手都体验过跑马撞墙; 撞墙大约都发生在32公里左右; 撞墙什么感觉?就像...
    little_m阅读 1,547评论 0 0