分面是一个强大的工具,可以快速分析出数据各子集模式的异同。ggplot2 提供了两种分面类型。

1.网格分面(facet_grid)

网格分面在2 维网格中展示图形。输入数据时,你需要考虑哪些变量作为行,哪些变量作为列,规则如下:

  • 不进行分面:即不使用函数facet_grid()或者使用facet_null(),此时得到的是单独画板;
ggplot(mtcars, aes(mpg, wt)) + geom_point()
ggplot(mtcars, aes(mpg, wt)) + …
R

使用以下手动型标度可以定制新的标度:scale_colour_manual(..., values)、scale_fill_manual(..., values)、scale_size_manual(..., values)、scale_shape_manual(...,values)、scale_linetype_manual(..., values)等。使用这些标度,可以对图形的颜色、填充色、大小等属性进行自定义修改。这里主要介绍参数values(必选)、breaks、labels,其他具体查看帮助文档。

必选参数values:

手动型标度有一个重要参数values,用于指定这个标度应该生成的值。如果这个向量中的元素是有名称的。则它将自动匹配输入和输出的值,否则它将按照离散型变量中水平的先后次序进行匹配。

p <- qplot(brainwt,bodywt,data=msleep,log="xy",geom = 'line')+ aes(colour=vore)
p + scale_colour_manual(values = c('red', …
R

除了位置标度之外,最常用的图形属性就是颜色了。对于连续型变量有三种基于渐变的方法,对于离散型有两种方法。rgb 编码的色彩空间使用了红、绿、蓝三种光的强度来表示一种颜色,这种色彩空间存在个问题:视觉感知上不均匀。这里使用的是hcl 色彩空间的现代方案,它分别由色相(hue)、彩度(chroma)、明度(luminance)三部分构成。

以下标度对边界色(colour)图形属性和填充色(fill)图形属性均有效。

连续型:

根据颜色梯度色彩数量划分,共有三类连续型颜色梯度(即渐变色):

  • scale_colour_gradient()和scale_fill_gradient():双色梯度。顺序由低到高,参数low 和high 用于控制此梯度两端颜色;

  • scale_colour_gradient2()和scale_fill_gradient2():三色梯度。顺序为低-中-高,参数low和high 用于控制此梯度两端颜色,中点默认值是0,可以用参数midpoint 将其设置为任意值;

  • scale_colour_gradientn()和scale_fill_gradientn():自定义的n 色梯度。此标度需要赋给参数colours 一个颜色向量。不加其他参数的话,这些颜色将依照数据的范围均匀地分布。如果你需要让这些值不均匀地分布,则可以使用参数values。如果参数rescale …

R

获取新浪新闻的国内新闻、国际新闻和社会新闻三大类,并且保存到MySQL数据库中。通过抓包工具获得新闻数据的API接口是http://api.roll.news.sina.com.cn/zt_list?,请求时只要带上适当的参数就可以获取数据了,代码如下:

编写Sina_News.py:

# -*- coding:utf-8 -*-
import json
import MySQLdb
import requests

class Sina_News(object):
    def __init__(self, newclass='gnxw'):
        self.url …

每一幅图形一定拥有两个位置标度,一个指定水平位置(x 标度),另一个是指定竖直标度(y 标度)。ggplot2 提供了连续性、离散型(针对因子型、字符型、逻辑向量)、以及日期型。对所有的位置坐标来说,修改坐标轴范围是一项常见任务,使用辅助函数xlim()和ylim()可以减轻我们工作量。比如:

  • xlim(10,20):从10 到20 的连续型标度;
  • xlim(”a”, “b”, “c”):离散型标度;
  • xlim(as.Date(c(“2008-05-01”, “2008-08-01”))):从2008-05-01 到2008-08-01 的日期型标度。

连续型:

常见的连续型位置标度有scale_x_continuous、scale_y_continuous,它们均是将数据映射到x 轴和y 轴。而最有趣的变式是通过变换来生成的,每一个连续型标度都可以接受一个trans …

R

标度(scale),是将数据空间(标度的定义域)映射到图形属性空间(标度的值域)的一个函数。每一种图形属性都有一个默认的标度,当我们每一次使用这个图形属性时都会自动添加到图形中。


图形属性 离散型 连续型
颜色(colour)和填充色(fill) brewer、grey、hue、identity、manual gradient、gradient2、gradientn
位置(position)(x,y) discrete continuous、date、datetime、log10、sqrt、reverse
形状(shape) shape、identity、manual  
线条类型(line …
R

 

传统的画图函数(如plot、qplot)就好比在一张画布上画图,画好之后不能修改,而且只能使用一个数据集;而图层的思想是在多张透明的画布上绘图,再把这些画布按顺序叠加在一起形成一个完整的图形。每一张画布都可以使用不同数据集,可以单独对每一个图层进行修改,需要到哪些图层就画哪些图层。

创建绘图对象

在用 ggpot()绘制时,需先创建绘图对象,也就是第一个图层,它包含两个参数(数据与图形属性映射)。 这两个参数是绘制图形的默认参数,如果后面图层中没有重新设定新参数,那么它会自动调用绘图对象中的参数;如果重新设定了参数则不会使用默认的参数,参数在2.1 中有详细说明。

ggplot(data, aes(x, y, <other aesthetics>))

图层的作用是在图像上生成可以被人感知的对象。一个图层有4 个部分组成:

  • 数据和图形属性映射;
  • 一种统计变换;
  • 一种几何对象;
  • 一种位置调整方式。

图层的具体函数如下:

geom_XXX(mapping, …
R

ggplot2 之从qplot 开始

qplot 是包ggplot2 中的一个快速画图函数,如果你已经对R 的基础包画图函数plot基本掌握,那么qplot 就很容易掌握了。

install.packages(‘ggplot2’) #安装ggplot2包
library(ggplot2) #加载ggplot2包
set.seed(1410) #设置随机种子
dsmall <- diamonds[sample(nrow(diamonds), 100), ] #由于数据集diamonds …
R

在我们数据分析的实际应用中,我们可能会花费大量的时间在数据清洗上,而如果使用 R 里面自带的一些函数(base 包的 transform 等),可能会觉得力不从心,或者不是很人性化。好在我们有其他选择。这里我们介绍 dplyr 包。

单表操作函数(one table verbs)

  • filter: 保留满足条件的行
  • select: 使用列名选出列
  • arrange: 对数据的所有行排序
  • mutate: 添加新的变量
  • summarise: …
R