R语言学习笔记(七)画图

R语言学习笔记(七)

    • 条形图
      • 对于向量而言:
      • 矩阵
    • 箱线图
      • 一般画法
      • 补充参数:
    • 直方图
      • 间距不同的解决办法--density
    • 饼图
      • 普通饼图
      • 3D饼图
    • 散点图
      • 普通散点图
      • 散点图矩阵
    • 折线图

条形图

barplot(height , beside = F, horiz = F)
  • horiz为真时绘制水平条形图
  • beside为F时绘制堆积柱形图
  • heignt分为三类:
    – 向量,绘制一个柱形
    – 矩阵,beside为F时每数据绘制一个堆积柱形
    – 矩阵,beside为T时每数据绘制多个并列柱形

对于向量而言:

barplot(1:12,col=rainbow(12),names.arg=paste0(1:12,"月"),
        width=1.5, space=1,border=NA,axes=FALSE)

R语言学习笔记(七)画图_第1张图片
其中:

  • names.arg表示横坐标名称
  • width表示柱子宽度
  • space表示柱子间距
  • border表示柱子有无边框,可以是逻辑值,可以是颜色向量
  • axes表示是否显示坐标轴

将两个柱形图拼接在一起:
使用 add=TRUE,同时用xlim控制绘图区域避免重叠

barplot(c(3,5,7),xlim=c(0,10),col=c('#F8B195','#F67280','#C06C84'),width=1,border=F)
barplot(c(4,6,5),xlim=c(0,10),width=1,col=c('#012340','#023059','#4A738C'),add=TRUE,space=c(5,0.2,0.2),border=F)

R语言学习笔记(七)画图_第2张图片

矩阵

选择beside=T或者F来堆叠或者并列图形

> fruit
       Q1 Q2 Q3 Q4
apple  22 18 16 28
banana 20 17 25 23
orange 29 18 15 26

>barplot(fruit,col=c('#F8B195','#F67280','#C06C84'),
        names.arg=paste0(1:4,"季度"),
        legend.text=c("苹果","香蕉","橙子"),
        args.legend = list(x='top',ncol=3),
        ylim = c(0,37),
        main="水果全年销量",
        col.main="black",
        cex.main=1.7,
        border = F,
        beside=TRUE)

R语言学习笔记(七)画图_第3张图片
使用公式绘图:

  • data前用 y~x1+x2代替,y是因变量,x1x2顺序会影响堆积方式
  • 如果使用公式,会按照拼音顺序排列行,如果不想这么排序,可以依次传入y,x来代替:
    citydata $population, names.arg=citydata $city,
> stucount
  major sex count
1  经济  男    15
2  经济  女    25
3  统计  男    22
4  统计  女    13
5  管理  男    20
6  管理  女    12
> barplot(count~major+sex,data=stucount,
        col=c('#F8B195','#F67280','#C06C84'),legend.text=TRUE,
        main="男女生人数对比",
        ylim=c(0,60),xlim=c(0,10),width=3,
        xlab="性别",ylab="人数")

R语言学习笔记(七)画图_第4张图片


箱线图

R语言学习笔记(七)画图_第5张图片

一般画法

四种表现形式

boxplot(v1,v2,v3) 每个向量都是一个箱体

boxplot(list(tag1=v1,tag2=v2,...)每个组件是一个箱体

boxplot(matrix)

boxplot(y~x)数值型向量y用因子x分组
economics <- pmin(round(rnorm(120,mean=78,sd=8.5)),100)
statistics <- pmin(round(rnorm(70,mean=83,sd=12.3)),100)
management <- pmin(round(rnorm(80,mean=73,sd=5.2)),100)
boxplot(economics,statistics,management,
        names=c("经济学","统计学","管理学"),
        boxwex=0.4,
        col=c('#F8B195','#F67280','#C06C84'),
        main="不同专业成绩对比",
        cex.main=1.2
)

R语言学习笔记(七)画图_第6张图片
因子分组:

> height
 [1] 172 166 175 162 166 178 185 159 172 170 160 180
> sex
 [1] "男" "女" "男" "女" "女" "男" "男" "女" "女" "男" "女" "男"
> boxplot(height~sex,
        col=c('#F67280','#C06C84'),
        boxwex=0.4) 

R语言学习笔记(七)画图_第7张图片
数据框dataframe同理

boxplot(score~major,data=s,
		col=c('#F8B195','#F67280','#C06C84'),boxwex=0.4)

R语言学习笔记(七)画图_第8张图片

补充参数:

  • add=TRUE 在已有图形上添加箱体图
  • subset给出要使用哪些行
  • at给出绘制箱体的位置,默认是1:n,-号表示向左偏移,+表示向右偏移
attach(ToothGrowth)
boxplot(len ~ dose, at = 1:3-0.2, 
        subset = (supp == "VC"), 
        boxwex = 0.25, col = "yellow",
        main = "Guinea Pigs' Tooth Growth",
        xlab = "Vitamin C dose mg",
        ylab = "tooth length", ylim = c(0, 35))
boxplot(len ~ dose, add = TRUE, at = 1:3+0.2,
        subset = supp == "OJ",
        col = "orange",boxwex = 0.25)
legend(2, 9, c("Ascorbic acid", "Orange juice"),
       fill = c("yellow", "orange"))

R语言学习笔记(七)画图_第9张图片


直方图

hist(x, breaks, right, labels)
  • x:要被分段的数值型向量
  • breaks:分段点,有3种形式
    – 数值型向量,给出分段点的值,包括端点
    – 一个整数,表示分段点数量
    – 计算分段数量的算法名称……【少见】
  • right:是否右闭,默认TRUE
  • labels:每个柱形上面添加的标签
  • hist函数的返回值是histogram类的对象
hist(score,breaks=c(50,60,70,80,90,100),
          col=c('#658791','#F2EBD5','#F2A62A','#F27649','#B4766A'),
          include.lowest=TRUE,right=FALSE,border = F) 

R语言学习笔记(七)画图_第10张图片

间距不同的解决办法–density

所有矩形的总面积为1

ret<-hist(score,breaks=c(50,60,70,85,100),
  include.lowest=TRUE,right=FALSE,
  col=c('#658791','#F2EBD5','#F2A62A','#F27649'),
  ylim=c(0,0.05),border=F,
  labels = c("差(看面积)","中(看面积)","良(看面积)","优(看面积)"),
  main="成绩分布")

R语言学习笔记(七)画图_第11张图片


饼图

普通饼图

pie(x, labels = names(x), clockwise = F, col, 
    radius = 0.8, init.angle = 0)
  • x:数值型向量
  • labels:用于切片的描述
  • clockwise:是否顺时针绘制,默认假
  • col:颜色
  • radius:饼图的半径
  • init.angle:初始的角度
pie(c(3,5,7,4),labels=c("苹果","香蕉","橙子","葡萄"),
    clockwise = TRUE, radius = 1, 
    col=c('#658791','#F2EBD5','#F2A62A','#F27649'),
    init.angle=45,border = F)

R语言学习笔记(七)画图_第12张图片

3D饼图

需要安装包plotrix,引用其中的pie3D函数
为了描述更多的参数,我们绘制下面这个不太好看的饼图:

ret<-pie3D(c(3,5,7,4),labels=c("苹果","香蕉","橙子","葡萄"),
           height = 0.2, edges = 4, theta = pi/3, shade = 0.6,
           radius=1.2, explode = 0.2,
           col=c('#658791','#F2EBD5','#F2A62A','#F27649'),border = F)

R语言学习笔记(七)画图_第13张图片

  • edges:形成圆的线数
  • height:饼图的高度
  • theta:看饼图的视角
  • start:开始绘制扇区的角度
  • labels:每个扇形的可选标签
  • shade:0-1之间的小数,用来衡量阴影的大小,数字越大阴影越小

散点图

普通散点图

plot(x, y, main, xlab, ylab, xlim, ylim)
  • main:主标题
  • xlab ylab:坐标轴标签
  • xlim ylim:图像上x、y的取值范围
plot(x=mtcars$wt,y=mtcars$mpg,
     xlab="重量(千磅)",ylab="单位加仑汽油行驶英里数")

R语言学习笔记(七)画图_第14张图片

散点图矩阵

pairs(formula, data)
  • formula表示成对使用的一系列变量,变量之间两两配对画出散点图
  • data是获取的数据框
pairs(~wt+mpg+disp,data=mtcars,col = '#FF5964',
      main = "散点图矩阵")

R语言学习笔记(七)画图_第15张图片


折线图

plot(x, y, type, pch)
  • 常用绘图类型type
    p:只绘制点
    l:只绘制线
    b:点和线
    o:点线重合
    n:空坐标系

  • pch:绘制点所用的字符,每个数字代表不同的形状
    R语言学习笔记(七)画图_第16张图片

  • 通过line()函数可以绘制多条折线

#半个月每日消耗的电量情况(千瓦时)
x<-1:20
#张三家日耗电量
y<-rnorm(20,mean=4,sd=0.7)
#李四家日耗电量
z <- rnorm(20,mean=6,sd=1)
#ylim给出y轴数值范围,为之后的绘制预留空间
plot(x,y,type="b",col="#3A7D7C",
     xlab="日期",ylab="日耗电量(千瓦时)",
     ylim=c(0,10),pch=16)
#使用lines函数在已有图形上增加折线图
lines(x,z,col="#EC5A31",type="b",pch=15)
#添加图例
legend(x=2,y=10,
       legend=c("张三家","李四家"),
       pch=c(15,2),col=c("#3A7D7C","#EC5A31"))

R语言学习笔记(七)画图_第17张图片

你可能感兴趣的:(R学习笔记)