R -> ggplot2包(1)

ggplot2包说明文档学习笔记(1)

  • ggplot2的绘图数据来源是一个dataframe
  • ggplot2通过一次次地添加图层来达到绘图的目的,每个图层之间通过+连接
  • ggplot2并不会在乎画出来的图是否有实际意义,所以当使用了不正确的代码时有可能会生成一些很奇葩的图,但是如果有足够的想象力,可以利用ggplot2画出各种图像
  • 要画出特别好看且有意义的图,需要的不仅仅是想象力和写代码的能力,还需要对色彩,构图等的掌控,基本可以确认的是我在这方面狗屁不是
  • ggplot2的基本图形函数中几乎都包含statposition两个参数,stat决定了对数据进行变换的方式,position决定了对图形进行摆放的方式,修改这两个参数,基本上就是奇葩图像出现的开始

ggplot2中的基本图形

在ggplot2中需要通过aes()来设定x轴与y轴的数据,故根据x和y的数据类型,把ggplot2中的基本图形分为以下几种

  1. 连续型x 连续型y
  2. 连续性x 不需要y
  3. 离散型x 连续型y
  4. 离散型x 不需要y
  5. 不需要x 不需要y

连续型x 连续型y

geom_point(stat = "identity", position = "identity")
  • 散点图
geom_jitter(stat = "identity", position = "jitter")
position_jitter(width = NULL, height = NULL)
  • 对散点图增加了一个扰动,position_jitter()的返回值可以作为参数position的值,适合重复数据较多导致呈现离散化的小数据集
geom_count(stat = "sum", position = "identity")
stat_sum(geom = "point", position = "identity")
  • 对每个位置点的数量计数,适合离散数据,当然连续型数据也能用就是没什么用
geom_bin2d(stat = "bin2d", position = "identity")
stat_bin_2d(geom = "tile", position = "identity")

geom_hex(stat = "binhex", position = "identity")
stat_bin_hex(geom = "hex", position = "identity")
  • 根据范围内点的数量来填充颜色,适合数据量特别大的数据,geom_bin2d为矩形范围,geom_hex为六边形范围
geom_line(stat = "identity", position = "identity")
geom_path(stat = "identity", position = "identity") 
geom_step(stat = "identity", position = "identity", direction = "hv")
  • geom_line将图上的点从左至右依次连接
    geom_path将图上的点按照源数据中的顺序依次连接
    geom_step将图上的点从左至右阶梯型连接,参数direction决定是先水平再垂直(hv)连接还是先垂直再水平(vh)连接
geom_label(stat = "identity", position = "identity")
geom_text(stat = "identity", position = "identity")
  • geom_label添加标签,就是在文本的后面还有一个小背景
    geom_text添加文本,纯文本
geom_col(position = "stack")
  • 类似于柱形图,区别在于柱形图是对于x计数,geom_col是对于y求和
geom_tile(stat = "identity", position = "identity", width, height)
geom_rect(stat = "identity", position = "identity", aes(xmin, xmax, ymin, ymax))
geom_raster(stat = "identity", position = "identity", hjust = 0.5, vjust = 0.5)
  • 三个图形都是在点的后方绘制一个长方形,区别在于:
    geom_tile使用widthheight两个参数代表绘制的长方形的长和宽,点在长方形中央
    geom_rect使用aes(xmin, xmax, ymin, ymax)几个参数来决定长方形四条边的位置,点有可能不在长方形中央
    geom_raster的长方形的长和宽为所有点中相隔最近的两个点的水平距离和垂直距离,hjustvjust都取1时,长方形在点的右上角。但是这个函数似乎有bug,如下:
df <- data.frame(x1 = c(1,2,4,8,16), y1 = c(1,2,4,8,16),
                 x2 = c(1,2,5,8,16), y2 = c(1,2,5,8,16))
ggplot(df) + 
  geom_raster(aes(x1, y1), fill = "blue", alpha = 0.3, hjust = 1, vjust = 1) + 
  geom_point(aes(x1, y1), colour = "blue", shape = 2) +
  geom_raster(aes(x2, y2), fill = "red", alpha = 0.3, hjust = 1, vjust = 1) + 
  geom_point(aes(x2, y2), colour = "red", shape = 1)
geom_crossbar(stat = "identity", position = "identity", aes(ymax, ymin))
geom_errorbar(stat = "identity", position = "identity", aes(ymax, ymin))
geom_linerange(stat = "identity", position = "identity", aes(ymax, ymin))
geom_pointrange(stat = "identity", position = "identity", aes(ymax, ymin))
geom_errorbarh(stat = "identity", position = "identity", aes(xmax, xmin))
  • 各种添加垂直间隔,对应图形如下图


geom_rug(stat = "identity", position = "identity")
  • 在图的边缘添加描述x和y的边缘分布的小线段
geom_segment(stat = "identity", position = "identity", aes(xend, yend))
geom_curve(stat = "identity", position = "identity", aes(xend, yend))
geom_spoke(stat = "identity", position = "identity", aes(angle), radius)
  • geom_segment在点(x, y)和点(xend, yend)之间画上线段,而geom_curve在两个点之间画上曲线,geom_spoke通过极坐标来添加线段,angle代表角度,radius代表半径
geom_smooth(stat = "smooth", position = "identity")
stat_smooth(geom = "smooth", position = "identity")
  • 添加拟合曲线
geom_polygon(stat = "identity", position = "identity")
  • 将点通过geom_path连接后内部填充颜色
geom_area(stat = "identity", position = "stack")
geom_ribbon(stat = "identity", position = "identity", aes(ymin, ymax))
  • geom_ribbonyminymax之间填充颜色,geom_area其实就是ymin = 0, ymax = ygeom_ribbon

连续型x 不需要y

geom_histogram(stat = "bin", position = "stack")
geom_freqpoly(stat = "bin", position = "identity")
stat_bin(geom = "bar", position = "stack")
  • 直方图,geom_freqpoly相当于用线来描绘直方图的边界
geom_density(stat = "density", position = "identity")
stat_density(geom = "area", position = "stack")
  • 密度曲线,相比较于直方图来说更加平滑

离散型x 连续型y

geom_boxplot(stat = "boxplot", position = "dodge2")
stat_boxplot(geom = "boxplot", position = "dodge2")
  • 箱线图
geom_violin(stat = "ydensity", position = "dodge")
stat_ydensity(geom = "violin", posion = "dodge")
  • 小提琴图。类似于箱线图,不过在中央部分不用矩形而用类似于小提琴的图形,从而能够大致看出中央部分数据的密度曲线

离散型x 不需要y

geom_bar(stat = "count", position = "stack")
stat_count(geom = "bar", position = "stack")
  • 柱形图,对x进行计数

不需要x 不需要y

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