饼图也称圆形图,主要用来分类数据的可视化,用圆形内各个扇形的角度来表示样本或总体中各个组成部分的比例,主要用于研究数据的结构问题,这里我们介绍一下饼图的简单绘制方法。
一、平面饼图的绘制
首先我们来介绍一下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)
运行后,如下所示的饼图
这样一看这样绘制出的饼图感觉有点小,我们给上面的代码添加上radius参数
m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z,
radius=1.05)
当然我们也可以添加edges参数,为饼图添加一下它的边,虽然这样画出来的图就不是一个圆了。同时添加clockwise参数,让各个部分做自动分割。
m <- pie(x,main='问题一调查结果统计',density =80,angle=30,col=z,
radius=1.05,edges=6,clockwise=T)
当然一个直观的饼图是需要有完整的百分比参数与图例来描述的,我们可以用以下的代码来为画出来的饼图添加百分比以及图例。
#将数据四舍五入保存为两位小数
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)))
分割线以上的代码运行后所绘制出的圆形图
添加图例后的圆形图
绘制出图形之后,我们可以利用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)
为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圆形图如下
其它的很多操作pie3D函数与pie函数差不多,这里不再赘述.