[整理]统计数据的可视化——图表绘制(一)

类别数据可视化

条形图及其变种

简单条形图

> par(mfrow=c(1,3),mai=c(0.7,0.7,0.6,0.1),cex=0.7,cex.main=0.8)
> barplot(count1,xlab = "频数",ylab = "社区",horiz = TRUE,main = "(a)水平条形图",col=2:5)
> barplot(count2,xlab = "性别",ylab = "频数",main = "(b)垂直条形图")
> barplot(count3,xlab = "态度",ylab = "频数",main = "(b)垂直条形图",col = 2:3)

par函数:图形控制的参数设置函数:

常用参数:

cex:控制文字和绘图符号的大小,cex=1表示正常大小

font.lab:控制坐标轴标签的字体

lyt:设置线条类型

lwd:设置线条宽度

mai:参数是一个数值向量c(底部,左侧,上侧,右侧),设置图形边距大小,单位是英寸

mfcol:参数是一个数值向量c(nr,nc),用于将绘图区域分割成相应的行数和列数

mfrow:同mfcol,只是按行填充各图

pch:设置绘图点或符号的类型

barplot函数:绘制条形图

常用参数:

col:设置图形颜色

las:只能是0,1,2,3中的某一直,用于表示刻度值的方向,0-平行于坐标轴;1-总是水平方向;2-总是垂直于坐标轴;3-总是垂直方向。

plot函数:绘制散点图

常用参数:

type:设置绘图类型,p-绘点,l-绘线,b-点和线

axes:axes=FALSE,暂时禁止坐标轴的生成以便使用axis()函数添加你自己定制的坐标轴。默认情况是axes=TRUE,即包含坐标轴。

axis函数:添加坐标轴

常用参数

side:1=below, 2=left, 3=above and 4=right.

mtext函数:在图形空白处输入文本

常用参数:

line:在哪边线,从0开始计数

adj:调整每个字符串的阅读方向,adj=0-左对齐或下对其;adj=1-右对齐或上对齐

帕累托图:按各类别的频数多少排序后绘制的条形图

> par(mfrow=c(1,1),mai=c(0.7,1,0.1,1),cex=0.8)
> barplot(x,xlab = "社区",ylab = "频数",col = 2:4)
> y<-cumsum(x)/sum(x)
> par(new=T)    #在当前图表中编辑
> plot(y,type="b",lwd=1.5,pch=15,axes=FALSE,xlab='',main='')    #绘制散点图
> axis(4)    #添加自定义坐标轴
> par(las=0)
> mtext("累计频率",side=4,line=3)
> mtext("累计分布曲线",line=-2.5,cex=0.8,adj=0.75)

复式条形图:包括并列条形图和堆叠条形图

> myinfo1<-table(myinfo$态度,myinfo$社区)    #得到的数据态度为行,社区为列
> par(mfrow=c(1,2),cex=0.8)
> barplot(myinfo1,xlab = "社区",ylab = "频数",ylim = c(0,8),col = c("green","blue"),legend = rownames(myinfo1),args.legend = list(x=8),beside=TRUE,main = "社区并列条形图")
> barplot(myinfo1,xlab = "社区",ylab = "频数",ylim = c(0,8),col = c("green","blue"),legend = rownames(myinfo1),args.legend = list(x=4),main = "社区堆叠条形图")


barplot参数补充:

ylim:限制y轴的值

legend:添加图例

args.legend:将变量传递给legend,设置图例的位置

beside:默认值为FALSE,绘制堆叠条形图;beside=TRUE,绘制并列条形图。

脊形图:可以看做堆叠条形图的变种,将一个类别变量各类别条的高度都设为1,条的宽度与观测频数成正比,条内每一段的高度表示另一个类别变量各类别的比例。

> library(grid)
> library(vcd)
> addmargins(table(myinfo$态度,myinfo$社区))
      
       社区A 社区B 社区C Sum
  反对     2     1     2   5
  赞成     6     3     6  15
  Sum      8     4     8  20
spine(态度~社区,data = myinfo,xlab = "社区",ylab = "态度",margins=c(4,3.5,1,2.5))


spine函数

margins:设置边距

马赛克图:用于两个以上的类别变量,其图中嵌套矩形的面积正比于单元格的频数。

mosaicplot(~态度+社区+性别,data=myinfo,color=4:5,main = "")

mosaicplot函数

~右侧为类别变量,多个类别变量之间用“+”连接

饼图及其变种

二维饼图

> count1<-table(myinfo$社区)
> count1

社区A 社区B 社区C 
    8     4     8 
> percent<-prop.table(count1)*100
> percent

社区A 社区B 社区C 
   40    20    40 
> name<-names(count1)
> name
[1] "社区A" "社区B" "社区C"
> lable1<-paste(name," ",percent,"%",sep="")
> lable1
[1] "社区A 40%" "社区B 20%" "社区C 40%"    #前期数据处理
> par(pin=c(3,3),mai=c(0.1,0.4,0.1,0.4),cex=0.8)
> pie(count1,labels=lable1,init.angle = 90)    #init.angle=90 从12点钟位置开始,逆时针方向绘制


par函数

常用参数补充:

pin:设置维度??我也没弄明白

pie函数

pie(x, labels = names(x), edges = 200, radius = 0.8,clockwise = FALSE, init.angle = if(clockwise) 90 else 0, density = NULL, angle = 45, col = NULL, border = NULL,lty = NULL, main = NULL, ...)

表示一个非负的数值向量,表示每个扇形的面积。

labels代表各扇形面积标签的字符型向量。

radius 表示饼图的圆的半径,特别是在字符标签过长的情况尤其适用。

main 是用来表示图标的标题的。

col 是表示每个扇形的颜色,相当于调色板。

clockwise 是一个逻辑值,用来指示饼图各个切片是否按顺时针做出分割。

density:底纹的密度。默认值为NULL

angle:设置底纹的斜率。

edges设置多边形的边数(圆的轮廓是具有很多边的多边形近似)。

三维饼图

> library(plotrix)
> pie3D(count1,labels=lable1,explode=0.1,labelcex=0.7,col = (4:6))

pie3D函数

explode:设置不同饼块之间的间隔


扇形图

fan.plot函数

library(plotrix)
fan.plot(count1,labels = lable1,ticks = 10,col=c("grey30","grey70","red"))    #ticks可以为逻辑值也可为数值,用于表示扇形图上的刻度数

没有更多推荐了,返回首页