饼图也称圆形图,主要用来分类数据的可视化,用圆形内各个扇形的角度来表示样本或总体中各个组成部分的比例,主要用于研究数据的结构问题,这里我们介绍一下饼图的简单绘制方法。

一、平面饼图的绘制

首先我们来介绍一下pie函数的基本书写格式,如下:

pie(x,                #表示数值型向量x

labels,              #各个扇形的标签,为字符串型向量

edges,             #多边形的边数

radius,             #饼图的半径

clockwise,      #逻辑值,决定是否让饼图的各个部分按顺时钟切割排序

init.angle,       #切片的起始角度,默认为0

density,          #底纹的密度,默认为NULL

angle,            #底纹的斜率

col,                 #决定各个扇形的颜色

border,          #饼图边框的颜色

main                 #饼图的标题

)

那么现在我们来尝试一下实际操作

#建立数值向量x
x <- c(12,32,14,23,15,32)                                     
#建立颜色向量z
z <- c('green','gray','yellow','blue','red','orange')    
#绘制饼图m
m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z)

运行后,如下所示的饼图

R语言 地图上画饼图 r语言绘制饼图示范_R语言 地图上画饼图

这样一看这样绘制出的饼图感觉有点小,我们给上面的代码添加上radius参数

m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z,
        radius=1.05)

R语言 地图上画饼图 r语言绘制饼图示范_图例_02

当然我们也可以添加edges参数,为饼图添加一下它的边,虽然这样画出来的图就不是一个圆了。同时添加clockwise参数,让各个部分做自动分割。

m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z,
        radius=1.05,edges=6,clockwise=T)

R语言 地图上画饼图 r语言绘制饼图示范_开发语言_03

当然一个直观的饼图是需要有完整的百分比参数与图例来描述的,我们可以用以下的代码来为画出来的饼图添加百分比以及图例。

#将数据四舍五入保存为两位小数
piepercent<- paste(round(100*x/sum(x), 2), "%")  
#给数据添加百分号
m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z,
         radius=1.05,edges=6,clockwise=T,labels=piepercent)
#-------------------------------------------------------------
#添加图例
legend("topright",c('父母','室友','同学','老师','伴侣','其它'),cex=1,
       fill=rainbow(length(x)))

分割线以上的代码运行后所绘制出的圆形图

R语言 地图上画饼图 r语言绘制饼图示范_图例_04

添加图例后的圆形图

R语言 地图上画饼图 r语言绘制饼图示范_R语言 地图上画饼图_05

绘制出图形之后,我们可以利用png、jpeg或者bmp函数来将绘制的圆形图存储到图片。

二、3D饼图的绘制

为了绘制3D饼图,我们需要利用到R的扩展包plotrix中的pie3D函数

基本书写格式可以参照pie3D函数的写法,值得注意的是pie3D函数常用的参数explode,这是pie函数所没有的,explode后的数值表示了3D饼图的刀口大小。依旧用上述数据进行绘制:

#绘制3D饼图
m <- pie3D(x,main='问题一调查结果统计',density =80,angle=30,col=z,
         radius=1.05,edges=6,clockwise=T,labels=piepercent)

R语言 地图上画饼图 r语言绘制饼图示范_R语言 地图上画饼图_06

为3D的圆形图添加刀口,explode=0.5

#添加刀口
m <- pie3D(x,main='问题一调查结果统计',density =80,angle=30,col=z,
         radius=1.05,edges=6,clockwise=T,labels=piepercent,explode=0.05)
#添加图例
legend("topright",c('父母','室友','同学','老师','伴侣','其它'),cex=0.8,#添加图例
       fill=rainbow(length(x)))

 上述代码运行后生成的3D圆形图如下

R语言 地图上画饼图 r语言绘制饼图示范_R语言 地图上画饼图_07

其它的很多操作pie3D函数与pie函数差不多,这里不再赘述.