R格包

作者: RaoZC | 来源:发表于2019-02-27 02:11 被阅读0次

    格包(lattice package),主要用于对各种高维数据进行绘图。
    这个绘图过程由一个默认的面板函数完成,例如panel.densityplot,panel.histogram等。

    1. 可以使用的高级函数

    *histogram()             直方图
    *bwplot()                箱线图
    *dotplot()               克利夫兰点图
    *xyplot()                条形图
    densityplot()            核密度图
    qqmath()                 理论分位数图
    qq()                     双样本分位数图
    stripplot()              带形图
    splom()                  散点图
    contourplot()            表面等高线图
    levelplot()              表面伪色彩图
    wireframe()              三维表面透视图
    cloud()                  三维散点图
    parallel()               平行坐标图
    

    高级格函数最显著的特点就是公式的使用(y~x),表示y轴和x轴,公式中有一个垂直线“|”,叫做管符号,已经data参数。

    xyplot(y~x|z, data=n)        这是最简单的格函数模式
    

    2. 具体使用方法

    2.1 多面板直方图 histogram()

    格包中的histogram用于绘制多面板直方图,以下举例说明。使用的数据如下:

    数据

    输入下列命令,画出直方图

    env=read.table("RIKZENV.txt",header = T)
    library(lattice)
    histogram(~SAL|Station, 
              data=env,
              subset=(Area=="OS"),     仅仅呈现其中OS区域的数据
              layout=c(1,4),           图形组合为1列4行
              nint=100,                将条形的数目增加到100,密度增加
              xlab="Salinity",
              strip=FALSE,             取消上面的带状名称
              strip.left=TRUE,         将带状名称移动到面板右边
              ylab="Frequencies"
              )
    

    结果如下图:

    histogram
    2.2 多面板密度图 densityplot()

    完全使用上述histogram的data和参数

    densityplot(...)
    

    结果如下:


    densityplot
    2.3 qq图qqmath()

    qqmath用于绘制QQ图,就是分位数-分位数图,作用是将一组连续数据的分布和一种理论分布进行比较,完全使用上述histogram的data和参数

    qqmath(...)
    

    结果如下:


    qqmath
    2.4 多面板盒形图bwplot()

    单面板就是boxplot(),而在lattice里对应的多面板盒形图就是bwplot()
    我们继续用上面的数据env

    bwplot(SAL~factor(Month)|Area, 
           data=env,
           strip=strip.custom(bg="lightgreen"),      条形名称的颜色
           xlab="Month",
           ylab="Salinity",
           layout=c(2,5),
           cex=0.2,                                  中值点大小
           par.settings=list(
               box.rectangle=list(co1=3),            不知道什么的颜色
               box.umbrella=list(col=6),             极值线的颜色
               plot.symbol=list(cex=0.8,col=2)       奇异点大小,颜色
               )
           )
    

    结果如下:

    多面板盒子图
    2.5 多面板散点图: xyplot

    继续使用上面的数据

    env$Mytime=env$Year+env$dDay3/365
    xyplot(SAL~Mytime|factor(Station),
           data=env
           type="l",                        将点用line连起来
           strip=function(bg,...),
           strip.default(bg='blue',...),
           col.line=4
           lwd=1.5                          线宽
           )
    

    type还可以有多个选项,常用的有:
    type="r",增加一条回归线“regress”
    type="smooth",增加一个LOESS拟合
    type="g",增加网格“grid”
    type="a",将面板中每组均值“average”用线连起来
    结果如下:

    xyplot
    2.6 多面板克利夫兰点图:dotplot

    单面板的克利夫兰点图是dotchart(),而lattice里对应的是dotplot()

    dotplot(factor(Month)~SAL|Station,  
            subset=(Area=="OS"),
            jitter.x=TRUE,                    当多个观察值在同一月份具有相同值的时候,对水平方向增加少许随机变化
            col=1,
            strip=strip.custom(bg="white"),
            cex=0.5,
            ylab="Month",
            xlab="Salinity",
            data=env
            )
    

    结果如下:

    dotplot

    未完待续。

    相关文章

      网友评论

          本文标题:R格包

          本文链接:https://www.haomeiwen.com/subject/rwutuqtx.html