大数据人|大数据第一社区

 找回密码
 注册会员

扫一扫,访问微社区

查看: 4001|回复: 0
打印 上一主题 下一主题

[其它] 用R语言画不同版本的散点图

[复制链接]
  • TA的每日心情
    奋斗
    2015-7-30 23:05
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    852

    主题

    972

    帖子

    4804

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    4804
    QQ
    跳转到指定楼层
    楼主
    发表于 2015-7-14 16:47:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    不同版本的散点图矩阵
    散点图矩阵是散点图的高维扩展,它从一定程度上克服了在平面上展示高维数据的困难,在展示多维数据的两两关系时有着不可替代的作用。R 软件就包含了各种不同版本的散点图函数,本文主要介绍散点图矩阵的设计及其在R中的实现方法,并比较它们的长短,从而审时度势,选取自己喜欢的表现方式和相应的函数。
    他山之石,可以攻玉。除了辅之以不同的颜色、符号外,散点图中还可以添加其他图形元素,以增强表达力,最常见的添加剂有坐标轴须、直方图、箱线图、平滑曲线、拟合曲线等。

    常见的画散点图矩阵的函数有:

    pairs(graphics)
    R中,graphics包中的pairs()是画散点图矩阵的长老级函数,它不仅可以绘制最朴素的散点图矩阵,同时也可以通过进一步设置绘图参数进行配置(参见?pairs),达到更高的要求(添加其他图形元素等)。不过进一步设置较为麻烦,幸好后面要介绍的函数已经可以满足我们常见的额外要求。
    以鸢尾花数据为例,用以下代码绘制其散点图(图1),不同颜色分别代表不同品种的鸢尾花。
    1. pairs(iris[1:4], main = "Anderson's Iris Data -- 3 species",
    2.         pch = 21,
    3.         bg = c("red", "green3", "blue")[unclass(iris$Species)])
    复制代码

    1 pairs

    实际上,图1已经可以给我们很多信息,包括各类鸢尾花的花瓣、花萼长宽的大体分布以及它们两两之间的关系。


    scatterplot.matrix(car)
    car包中的scatterplot.matrix()函数(可以简写为spm())可以直接指定散点图中主对角线上的绘图元素(密度图、箱线图、直方图、QQ图等),还可以在散点图中添加拟合曲线、平滑曲线、相关读椭圆等。

    同样利用鸢尾花数据,下面代码画出其散点图矩阵(图2).
    1. library(car)
    2. spm(~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width |
    3.         Species, data = iris)
    复制代码
    2 spm

    gpairs(YaleToolkit)
    YaleToolKit包中的gpairs()函数同样可以绘制散点图矩阵,较之spm()函数,它更为复杂一些。下面代码得到图3,更多的例子参见帮助文档。
    1. library(YaleToolkit)
    2. gpairs(iris, upper.pars = list(scatter = 'stats'),
    3.          scatter.pars = list(pch = 1:3,
    4.                              col = as.numeric(iris$Species)),
    5.          stat.pars = list(verbose = FALSE))
    复制代码
    3 gpairs


    splom(lattice)
    lattice包是基于网格系统的,是S-PLUS里的Trellis图形在R中的实现。Trellis是多元数据可视化的方法,特别适用于发现各变量之间的相互作用关系。Lattice(Trellis)的主要想法是不同条件下的多个图:根据某变量的值的不同对两个变量作不同图。

    lattice包中的splom()函数可以按类别绘制散点图矩阵,也可以通过进一步的设置达到更高的要求。下面的代码再次得到鸢尾花数据的散点图矩阵(图4)。
    1. library(lattice)
    2. super.sym <- trellis.par.get("superpose.symbol")
    3. splom(~iris[1:4], groups = Species, data = iris,
    4.       panel = panel.superpose,
    5.       key = list(title = "Three Varieties of Iris",
    6.                  columns = 3,
    7.                  points = list(pch = super.sym$pch[1:3],
    8.                  col = super.sym$col[1:3]),
    9.                  text = list(c("Setosa", "Versicolor", "Virginica"))))
    复制代码
    4 splom

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册会员

    本版积分规则

    关闭

    站长推荐上一条 /2 下一条


    id="mn_portal" >首页Portalid="mn_P18" onmouseover="navShow('P18')">应用id="mn_P15" onmouseover="navShow('P15')">技术id="mn_P37" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">前沿id="mn_P36" onmouseover="navShow('P36')">宝箱id="mn_P61" onmouseover="showMenu({'ctrlid':this.id,'ctrlclass':'hover','duration':2})">专栏id="mn_P65" >企业id="mn_Nd633" >导航 折叠导航 关注微信 关注微博 关注我们

    QQ|广告服务|关于我们|Archiver|手机版|小黑屋|大数据人 ( 鄂ICP备14012176号-2  

    GMT+8, 2024-5-19 06:22 , Processed in 0.257663 second(s), 34 queries .

    Powered by 小雄! X3.2

    © 2014-2020 bigdataer Inc.

    快速回复 返回顶部 返回列表