R语言的饼图(pie)学习

 刚开始学习R语言, 第一篇的笔记, 长久以来作为一个数据仓库工程师,整天活在数据的矿坑中, 却一直没有涉足数据挖掘,实属惭愧。 为培养学习的兴趣和写学习笔记的良好爱好, 故选择最最简单的饼图作为分析对象。

第一感觉, R最为统计分析, 数据挖掘的工具, 具有强大的分析能力; 但是与简单易用, 美观灵活的绘图工具相比, R语言的绘图美观性, 易用性的的确不够友好, 当然, 也可能是我初学, 不够了解的关系。 但是绘图函数的中各种参数之多, 足以表明R的强大绘图能力; 故,目前我认为, R语言是一个专业的工具, 如果只想练点花拳绣腿的, 大可不必使用R语言。 

言归正传, 我从R语言最最简单的饼图pie()函数说起, 正如书中所说, 尽管饼图在商业应用上无所不在, 但是饼图在统计学家, 数据分析师眼中是比较卑微的, 它只能简单的呈现比例关系,无法在时间趋势, 同类比较等分析上有太多的作用; 故很多分析师都使用荆棘图代替饼图, 下面我们会慢慢比较两者的优劣。

首先,我们从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, ...)


主要参数解析:

pie( x, -- 一个为正式的数组, 如C(10, 30), 数组中的每个值决定了饼图扇区的大小, 三区比例为c[i]/sum(c)
labels = names(x),   -- 一饼图扇区的描述, R中要显示扇区的比例, 或者数字, 都要再这里花功夫, 的确不是很友善
edges = 200, - 翻译起来很苦涩, 感觉这个参数决定了边界的锐度, 作用不大
radius = 0.8,-- 饼图半径
clockwise = FALSE,-- 决定切片绘制顺时针或逆时针(即数学积极的方向),后者是默认, 作用也不大
init.angle = if(clockwise) 90 else 0,
density = NULL, -- 填写一个数字,决定了扇区展示的阴影线密度, 感觉也作用不大, 如果非要什么特殊效果的话, 可以试试
angle = 45, 
col = NULL, --颜色填充, 原文翻译:颜色矢量将用于填补或遮光片。如果缺少一套6柔和的色彩,除非density时par("fg")用于指定的
border = NULL,
lty = NULL, 
main = NULL, 
    ...)

个人的见解:

不需要过多的纠缠在参数的含义上, 学习阶段能学会使用核心基本功能就行, 其他的可以使用的时候查询帮助文档


好吧, 我们开始一些例子吧, 在开始例子的学习之前, 我们先准备一些数据, 这里我用vcd包下面的一些现成的数据做学习


1:数据准备

> library("vcd")
> attach(Arthritis)
> summary(Arthritis)
       ID          Treatment      Sex          Age          Improved 
 Min.   : 1.00   Placebo:43   Female:59   Min.   :23.00   None  :42  
 1st Qu.:21.75   Treated:41   Male  :25   1st Qu.:46.00   Some  :14  
 Median :42.50                            Median :57.00   Marked:28  
 Mean   :42.50                            Mean   :53.36              
 3rd Qu.:63.25                            3rd Qu.:63.00              
 Max.   :84.00                            Max.   :74.00              

我们以其中的Treatment列作为举例数据, 具体数据成分如下:

> table(Treatment)
Treatment
Placebo Treated 
     43      41 

2:数据准备好之后我们开始学习看看吧

例一: 要绘制一个最最简单的饼图, 看看Treatment列中, Placebo(安慰剂), Treated(治疗)的比例, 仅此而已。

> pie1 <- table(Treatment)
> pie1
Treatment
Placebo Treated 
     43      41 
> pie(pie1)

图像显示结果如下:

函数自动根据table()函数产生的列名, 默认指定了每一块labels的名称, 往下后面会看到对label的边界。




如果想要labels上显示办法比就麻烦一些了, 百分比还得自己计算, 如下代码:

> lals_pct <- paste(names(pie1), "", round(pie1/sum(pie1), 2), "%", sep="")
> lals_pct
[1] "Placebo0.51%" "Treated0.49%"



当然, 还有一些其他参数, 和3D饼图等各种类型的函数, 有需要可以查询使用, 不要强求都烂熟于脑海




猜你喜欢

转载自blog.csdn.net/ForRubyDownLoad/article/details/50734284