• 第三篇:数据可视化


    前言

            R语言的强大之处在于统计作图。其中统计部分的内容很多很强大,因此会在以后的实例中逐步介绍;而作图部分的套路相对来说是比较固定的,现在可以先对它做一个总体的认识。

           在上一篇文章中,介绍了使用graphics库进行绘图的方法,而本文将引入一个更为强大的库 --- ggplot2,它能做出各式各样,非常酷炫的统计图(甚至地图,热图等)。

           本文将结合一个实际项目中的例子讲解如何使用ggplot2绘图。

    ggplot绘图总体步骤

    1. 调用ggplot函数设置图形基本信息 --- 如:使用的数据集,x轴y轴向量,分类向量等最为基础的特征。

    2. 调用各种绘图函数绘制各类图形 -- 如:条形图(geom_bar),直方图(geom_histogram),散点图(geom_point)等。

    3. 调用各种标度函数对图形进行调整 --- 如:调整坐标轴(scale_x_continuous),调整色彩(scale_colour系列),调整图例(scale_fill系列)等。

    4. 调用annotate函数往图形中添加注解。

    5. 调用theme函数以对图形进行最终美化。一般来说这个函数是仅仅对外观因素进行美化,和具体数据不打交道。

           特别强调的是第五点theme函数特别强大,能定制出非常酷炫的效果。

    一个双柱状图+折线图的绘制实例

           本例需要生成的是一个用户在过去一段时间内,观看韩剧以及非韩剧节目的时间随时间变化的双柱状图,同时,要在这个图形上用折线图绘制所有用户观看韩剧/非韩剧的平均时间。

           第一步:获取基础数据集(仅显示部分)

           

           该数据集中,每行代表该用户的一次观看记录。

           各字段说明:

    - DEVICE_ID:用户标识
    - WATCH_TIME:观看时间
    - WATCH_DURATION:观看时长
    - ISKD:该节目是否为韩剧
    - PERTIME:所有用户的平均观看时长

    第二步:数据清洗

           在刚从文本中获取到数据后,数据类型有可能不是你所期望的。

           比如我的这个例子中,获取到的WATCH_TIME是因子类型,这显然不合我意。于是我将它转换成了时间类型。另外ISKD因为待会要拿他作为两个柱状的区分条件,因此将它转换为因子类型。至于观看时间,由于精度要求不高,因此直接转换为整型。

           另外,第一列的数据没用到(用户的设备ID),因此剔除掉。

           

           清洗完毕后的数据集如下:

           

           第三步:构建图形基础函数变量
           

           这一步生成的graph_base变量表示,使用data数据集,横轴为观看时间,纵轴为观看时长,根据该剧目是否为韩剧进行分类,且纵轴最大值为观看时间的最大值。

           这些基础信息都可以保存在这样的一个变量里,随掉随用。

           第四步:绘制韩剧/非韩剧观看时长双柱状图

           

           绘制函数中的参数与该图形显示有关,其中stat表示取观看时长的具体值,position表示双柱状是左右并列显示。

           注意是在上一步的基础图形信息变量上加上绘制函数,这就仿佛在基础图层之上添加了一个图层。

           第五步:绘制平均观看时长折线图

           

           另外两行代码则进行描点,显示具体值的操作。

           注意同样是在上一步生成的变量之上叠加图层。

           第六步:对坐标轴进行调整

           

           这段代码将横坐标轴进行了格式化(具体参数请查阅相关手册)以及一定的美化。

           所谓的坐标轴,或者下面要修改的图例都可以统称为标度。ggplot各种各样的标度函数,其形式大约都是scale_xx_xx这样。

           第七步:设置标题,图例等信息

           

           这一步对图中的图例以及图像的标题进行了较为细致的调整,使得图像看起来更加美观。

           另外绘制柱状图图例的时候也顺便为柱状图设置了主题色Pastel1。

           第八步:保存绘制结果:

           还可以保存为pdf格式之类的,非常方便。

    结果展示

           

    小结

           本文仅仅是从一个实例出发,讲解ggplot2绘图的基本框架步骤。对于其他细节,请读者在具体使用到的时候再去专门查询,没必要一次学会。

           最后推荐一本书《R数据可视化手册》。 

  • 相关阅读:
    Navicat for Mysql远程连接数据时报(1045错误)Access denied for user 'root'@'localhost' (using password yes);
    添加数据源,管理工具--数据源(ODBC),点击添加不显示该驱动
    安装mysql odbc遇到error 1918.errror installing ODBC driver mysql ODBC 5.3 ANSI Drive
    ISO9126软件质量模型
    敏捷测试到底是灵丹妙药还是又一个忽悠
    CSS中背景图片的background-position中的left top到底是相对于谁的?
    制作可扩展的按钮
    CSS中的HSLA颜色
    JavaScript(jQuery)中的事件委托
    从零开始写一个微前端框架-数据通信篇
  • 原文地址:https://www.cnblogs.com/muchen/p/6883040.html
Copyright © 2020-2023  润新知