R action 6

20171225(从有道迁移)

基本图形

  1. 条形图

    1. 简单条形图:

      1. 通过垂直的或水平的条形展示了类别型变量的分布(频数)
      2. 语法:barplot(height), 其中的height是一个向量或一个矩阵
      3. 选项horiz=TRUE会生成一幅水平条形图
      4. 选项main可添加一个图形标题,选项xlab和ylab则会分别添加x轴和y轴标签
      library("vcd")
      counts <- table(Arthritis$Improved)
      barplot(counts,main="Simple Bar Plot",xlab="Imporvement",ylab="Frequency")
      
      
    2. 堆砌条形图和分组条形图

      1. 如果height是一个矩阵而不是一个向量,则绘图结果将是一幅堆砌条形图或分组条形图。
      2. 若beside=FALSE(默认值),则矩阵中的每一列都将生成图中的一个条形,各列中的值将给出堆砌的“子条”的高度。
      3. 若beside=TRUE,则矩阵中的每一列都表示一个分组,各列中的值将并列而不是堆砌
      --堆砌条形图
      barplot(counts,main="Stacked Bar Plot",xlab="Treatment",ylab="Frequency",col=c("red","yellow","green"),legend=rownames(counts))
      
      --分组条形图
      barplot(counts,main="Stacked Bar Plot",xlab="Treatment",ylab="Frequency",col=c("red","yellow","green"),legend=rownames(counts),beside=TRUE))
      
      --对legend的遮挡结果进行处理,设置xlim,heargs.legnd的参数值
      barplot(counts,main="Stacked Bar Plot",xlim=c(0, ncol(counts) + 1.5),xlab="Treatment",ylab="Frequency",col=c("red","yellow","green"),legend.text=rownames(counts), args.legend=list(x=ncol(counts) + 1.5,y=max(colSums(counts)),bty = "n"))
      
    3. 均值条形图

      1. 条形图并不一定要基于计数数据或频率数据。
      2. 可以使用数据整合函数并将结果传递给barplot()函数,来创建表示均值、中位数、标准差等的条形图
      states <- data.frame(state.region,state.x77)
      means <- aggregate(states$Illiteracy,by=list(state.region),FUN=mean)
      means <- means[order(means$x),]
      barplot(means$x,names.arg=means$Group.1)
      
    4. 条形图的微调

      1. cex.names调整字号
      2. names.arg你指定一个字符向量作为条形的标签名
      3. par()函数也可以对图形进行微调
      4. 详细参数可以查看barplot的帮助文档
    5. 为棘状图(spinogram)

      1. 棘状图对堆砌条形图进行了重缩放,这样每个条形的高度均为1,每一段的高度即表示比例。
      2. 棘状图可由vcd包中的函数spine()绘制。
  2. 饼图

    1. 饼图函数:pie(x,labels),其中x是一个非负数值向量,表示每个扇形的面积,而labels则是表示各扇形标签的字符型向量。
    2. 示例:
    --图形设置,这样四幅图形就会被组合为一幅
    par(mfrow=c(2,2))                             
    slices <- c(10, 12,4, 16, 8) 
    lbls <- c("US", "UK", "Australia", "Germany", "France")
    
    pie(slices, labels = lbls, main="Simple Pie Chart")
    
    pct <- round(slices/sum(slices)*100)            
    lbls2 <- paste(lbls," ",pct,"%",sep="")
    pie(slices,labels = lbls, col=rainbow(length(lbls)),
        main="Pie Chart with Percentages")
    
    library(plotrix)                                               
    pie3D(slices, labels=lbls,explode=0.1, main="3D Pie Chart ")
    
    mytable <- table(state.region)                                   
    lbls3 <- paste(names(mytable), "\n", mytable, sep="")
    pie(mytable, labels = lbls3, 
        main="Pie Chart from a dataframe\n (with sample sizes)")
    
    par(opar)
    
    1. 扇形图:是通过plotrix包中的fan.plot()函数实现的

      fan.plot(slices,labels=lbls,main="Simple Fan Chart")

  3. 直方图

    1. 在X 轴上将值域分割为一定数量的组,在Y轴上显示相应值的频数,展示了连续型变量的分布;
    2. 函数:hist(x)
      1. x是一个由数据值组成的数值向量
      2. 参数freq=FALSE表示根据概率密度而不是频数绘制图形
      3. 参数breaks用于控制组的数量
      4. 在定义直方图中的单元时,默认将生成等距切分。
    3. 示例
    # simple histogram                                   
    hist(mtcars$mpg)
    
    # colored histogram with specified number of bins
    # 将组数指定为12,使用红色填充条形      
    hist(mtcars$mpg, 
         breaks=12, 
         col="red", 
         xlab="Miles Per Gallon", 
         main="Colored histogram with 12 bins")
    
    # colored histogram with rug plot, frame, and specified number of bins 
    
    # 在上图的基础上叠加了条密度曲线和轴须图(rug plot)。这条密度曲线是一个核密度估计,它为数据的分布提供了一种更加平滑的描述。
    # 轴须图是实际数据值的一种一维呈现方式。
    # 如果数据中有许多结(数据中出现相同的值,称为结),可以使用rug(jitter(mtcars$mpg,amount=0.02)) 将轴须图的数据打散:
    
    #使用lines()函数叠加了蓝色、双倍默认线条宽度的曲线
    
    hist(mtcars$mpg, 
         freq=FALSE, 
         breaks=12, 
         col="red", 
         xlab="Miles Per Gallon", 
         main="Histogram, rug plot, density curve")  
    rug(jitter(mtcars$mpg)) 
    lines(density(mtcars$mpg), col="blue", lwd=2)
    
    # histogram with superimposed normal curve (Thanks to Peter Dalgaard)  
    
    #在图2叠加在上面的正态曲线和一个将图形围绕起来盒型
    x <- mtcars$mpg 
    h<-hist(x, 
            breaks=12, 
            col="red", 
            xlab="Miles Per Gallon", 
            main="Histogram with normal curve and box") 
    xfit<-seq(min(x),max(x),length=40) 
    yfit<-dnorm(xfit,mean=mean(x),sd=sd(x)) 
    yfit <- yfit*diff(h$mids[1:2])*length(x) 
    lines(xfit, yfit, col="blue", lwd=2)
    box()
    
  4. 核密度图

    1. ==核密度估计==是用于估计随机变量概率密度函数的一种非参数方法;
    2. 函数plot(density(x))
      1. x是一个数值型向量。
      2. plot()函数会创建一幅新的图形,向一幅已经存在的图形上叠加一条密度曲线,可以使用lines()函数
    3. 示例
    # returns the density data  
    d <- density(mtcars$mpg) 
    # plots the results 
    plot(d) 
    
    #将曲线修改为蓝色,使用实心红色填充了曲线下方的区域,并添加了棕色的轴须图。
    plot(d, main="Kernel Density of Miles Per Gallon")       
    #polygon()函数根据顶点的x和y坐标(本例中由density()函数提供)绘制了多边形
    polygon(d, col="red", border="blue")                     
    rug(mtcars$mpg, col="brown") 
    
    1. 核密度图可用于比较组间差异,用sm包中的sm.density.compare()函数可向图形叠加两组或更多的核密度图。使用格式为sm.density.compare(x,factor)
      1. x是一个数值型向量
      2. factor是一个分组变量
      3. 示例:
      #比较拥有4个、6个或8个汽缸车型的每加仑汽油行驶英里数
      
      #将所绘制的线条设置为双倍宽度
      par(lwd=2)                                                       
      library(sm)
      attach(mtcars)
      
      # create value labels 
      # 变量cyl是一个以4、6或8编码的数值型变量
      # 为了向图形提供值的标签,这里cyl转换为名为cyl.f的因子
      cyl.f <- factor(cyl, levels= c(4, 6, 8),                         
                      labels = c("4 cylinder", "6 cylinder", "8 cylinder")) 
      
      # plot densities 
      sm.density.compare(mpg, cyl, xlab="Miles Per Gallon")                
      title(main="MPG Distribution by Car Cylinders")
      
      # add legend via mouse click
      colfill<-c(2:(2+length(levels(cyl.f)))) 
      cat("Use mouse to place legend...","\n\n")
      
      #参数值locator(1)表示用鼠标点击想让图例出现的位置来交互式地放置这个图例
      legend(locator(1), levels(cyl.f), fill=colfill) 
      detach(mtcars)
      par(lwd=1)
      
  5. 箱线图

    1. 通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)、上四分位数(第75百分位数)以及最大值,描述了连续型变量的分布
    2. 箱线图能够显示出可能为离群点(范围±1.5*IQR以外的值,IQR表示四分位距,即上四分位数与下四分位数的差值)的观测
    3. 函数:boxplot(x) ; 示例:boxplot(mtcars$mpg,main="Box Plot",ylab="Miles Per Gallon")
    4. 执行boxplot.stats(mtcars$mpg)即可输出用于构建图形的统计量
    5. 使用并列箱线图进行跨组比较,格式:```boxplot(formula,data=dataframe)
      1. formula是一个公式。示例公式:
        • 公式y ~A,将为类别型变量A的每个值并列地生成数值型变量y的箱线图。
        • 公式y ~ A*B,将为类别型变量A和B所有水平的两两组合生成数值型变量y的箱线图
      2. dataframe代表提供数据的数据框(或列表)。
      3. 参数varwidth=TRUE将使箱线图的宽度与其样本大小的平方根成正比。
      4. 参数horizontal=TRUE可以反转坐标轴的方向
      5. 通过添加notch=TRUE,可以得到含凹槽的箱线图
      6. 示例:
      boxplot(mpg~cyl,data=mtcars, varwidth=TRUE,col="red",main="Car Mileage Data", xlab="Number of Cylinders",ylab="Miles Per Gallon")
      
      # 含凹槽的箱线图
      boxplot(mpg~cyl,data=mtcars, notch=TRUE, varwidth=TRUE,col="red",main="Car Mileage Data", xlab="Number of Cylinders", ylab="Miles Per Gallon")
      
      # 个分组因子绘制箱线图
       boxplot(mpg ~ am.f * cyl.f ,data=mtcars, varwidth=TRUE,col=c("gold","darkgreen"),main="MPG Distribution by Auto Type",xlab="Auto Type")
      
      
  6. 小提琴图

    1. 小提琴图(violin plot)是箱线图变种;
    2. 小提琴图是箱线图与核密度图的结合;
    3. 使用vioplot包中的vioplot()函数绘制;
    4. 格式:vioplot(x1,x2,...,names=,cols=)
      1. x1,x2,…表示要绘制的一个或多个数值向量(将为每个向量绘制一幅小提琴图);
      2. 参数names是小提琴图中标签的字符向量;
      3. col是一个为每幅小提琴图指定颜色的向量。
    5. 示例
    install.packages("vioplot")
    library("vioplot")
    
    x1 <- mtcars$mpg[mtcars$cyl==4]
    x2 <- mtcars$mpg[mtcars$cyl==6]
    x3 <- mtcars$mpg[mtcars$cyl==8]
    
    vioplot(x1,x2,x3,names=c("4 cyl","6 cyl","8 cyl"),col="gold")
    
    
  7. 点图

    1. 点图在简单水平刻度上绘制大量有标签值的方法;
    2. 函数:dotchart(x,labels=)
      1. x是一个数值向量;
      2. labels是由每个点的标签组成的向量;
      3. cex可控制标签的大小;
      4. 参数groups来选定一个因子,用以指定x中元素的分组方式;
      5. 当使用groups时,参数gcolor可以控制不同组标签的颜色
    3. 示例
    dotchart(mtcars$mpg,labels=row.names(mtcars),cex=.7,main="Gas Mileage for Car Models",xlab="Miles Per Gallon")
    
    # 分组、排序、着色后的点图
    # 根据每加仑汽油行驶英里数(从最低到最高)对数据框mtcars进行排序
    x <- mtcars[order(mtcars$mpg),]
    
    # 数值向量cyl被转换为一个因子
    x$cyl <- factor(x$cyl)
    x$color[x$cyl==4] <- "red"
    x$color[x$cyl==6] <- "blue"
    x$color[x$cyl==8] <- "darkgreen"
    dotchart(x$mpg,labels=row.names(x),cex=.7,groups=x$cyl,gcolor="black",color=x$color,pch=19,main="Gas Milesage for Car Models\ngrouped by cylinder",xlab="Miles Per Gallon")
    
    # 说明:随着汽缸数的减少,每加仑汽油行驶的英里数有了增加。但你同时也看到了例外。例如,Pontiac Firebird有8个汽缸,但较六缸的Mercury 280C和Valiant的行驶英里数更多。六缸的Hornet 4 Drive与四缸的Volvo 142E的每加仑汽油行驶英里数相同。
    # 同样明显的是,Toyota Corolla的油耗最低,而Lincoln Continental和Cadillac Fleetwood是英里数较低一端的离群点
    
    
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • 感谢Robert I.Kabacoff 著作本书,同时感谢高涛、肖楠、陈钢编译此书。 最近在学习《R语言实战》,...
    数据斯基阅读 2,351评论 2 10
  • 参考书:《Numerical Ecology with R》-Daniel Borcard -F-P 1、基础函数...
    ximoos阅读 2,617评论 0 6
  • 今天状态不好,但是学习R语言,貌似就是对着书本瞧瞧代码,瞧瞧代码,很适合打发时间,出来图形时候的微微成就感还是很有...
    生信要进步阅读 930评论 0 0
  • 20171122(从有道迁移) 图形初阶 图形参数图形参数的选项来自定义一幅图形的多个特征(字体、颜色、坐标轴、标...
    KrisKC阅读 391评论 0 0
  • 在一切变好之前 我们会经历很多 不开心的事情 这段时间 可能很长 也可能是 一觉醒来的短暂 所以 耐心点 当坏事一...
    冷慧雨阅读 193评论 0 0