码迷,mamicode.com
首页 > 编程语言 > 详细

R语言与数据分析之二:绘图

时间:2014-12-02 19:23:01      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:r语言   数据分析   

图形展示是最高效且形象的数据描述手段,因此巧妙的图像展示是高质量数据分析报告的必备内容,因此强大的图形展示功能也是统计分析软件的必备功能。R语言提供了强大的吐血展示功能。今天我由简单到复杂分别和小伙伴们分享如何用R语言画出各位想要的图形。bubuko.com,布布扣

首先罗列下所有可选图形:

1、直方图(hist());2、散点图(plot());3、柱状图(barplot());4、饼图(pie());5、箱线图(boxplot());6、星相图(stars());7、脸谱图(faces());8、茎叶图(stem());9、QQ图(qqnorm());10、      地图包maps、mapdata、geosphere

为了方便地进行图形展示,我们创建一个数据场景,假设我们需要统计学生的3门课的考试情况。我们分别生成学号、高等数学(80到100的均匀分布)、线性代数(均值80,标准差为7的正态分布)和运筹学(均值83,标准差18的正态分布)三科成绩。相应的语句为:

Num=seq(102001,102100)
X1=round(runif(100,min=80,max=100))
X2=round(rnorm(100,mean=80,sd=7))
X3=round(rnorm(100,mean=83,sd=18))

基本统计--单指标

考虑到所有的成绩不能超过100分,因此需要将随机生成的成绩中高于100分的改为100分并将最终修正后的所有成绩连同学号存入数据框。

X2[which(X2>100)]=100
X3[which(X3>100)]=100
X=data.frame(Num,X1,X2,X3)

分别画出高等数学成绩的直方图、高等数学和线性代数的相关关系的散点图,运筹学成绩的柱状图和饼图,来观看各科成绩的分布情况。相应语句如下:

hist(X$X1)
plot(X1,X2)
barplot(table(X$X1))
pie(table(X$X1))
bubuko.com,布布扣

bubuko.com,布布扣

基本统计--多指标

接着我们将三科成绩用两种箱线图画出来,箱线图可以更加清楚的解释数据的分布情况,和数据的集中区域。命令如下:

boxplot(X$X1, X$X2, X$X3)
boxplot(X[2:4],col=c("red","green","blue"),notch=T)
bubuko.com,布布扣

为了更方便的观测单位个体的特性,R提供了星相图、脸谱图(根据脸的形状和眼睛的大小来反映数据)揭示每个个体属性上的差异,具体命令如下:

stars(X[c("X1","X2","X3")])
install.packages("TeachingDemos")
library("TeachingDemos")
faces2(X)
bubuko.com,布布扣

在形象化展示数据方面,R还提供了茎叶图控我们观看数据分布情况,命令如下:

stem(X$X2)
bubuko.com,布布扣

R语言还提供了判断数列是否服从正态分布的形象展示图形,可以简单的借助肉眼判断,当散落的点的分布越接近直线,则数列的分布越接近正态分布。命令如下:

qqnorm(X3)
qqline(X3)
bubuko.com,布布扣

地图专栏

最后为大家介绍R语言提供的丰富的地图包功能,首先需要安装maps包,可以用来画出漂亮的世界地图,供我们做社交网络分析。遗憾的是该包不包含中国地图包bubuko.com,布布扣,如若需要绘制中国地图,以方面建议加载mapdata包,另一方面,强烈建议谷歌贡献的ggmap包bubuko.com,布布扣,相关命令如下:

library(maps)
map("world",fill=TRUE,col=rainbow(200),ylim=c(-60,90),mar=c(0,0,0,0))
bubuko.com,布布扣
library(mapdata)
map("china",col="red4",ylim=c(18,54),panel.first=grid())
bubuko.com,布布扣

最后以一个航空公司航线分布案例,结束今天的R语言绘图介绍,首先我先导入外部数据,然后构造航线,最终在图形中展示出来。命令如下:

airports <- read.csv("http://datasets.flowingdata.com/tuts/maparcs/airports.csv", header=TRUE)
flights <- read.csv("http://datasets.flowingdata.com/tuts/maparcs/flights.csv", header=TRUE, as.is=TRUE)
map("world",col="#f2f2f2",fill=TRUE,bg="white",lwd=0.5)
fsub <- flights[flights$airline=="AA",]
for (j in 1:length(fsub$airline)) {
air1 <- airports[airports$iata == fsub[j,]$airport1,]
air2 <- airports[airports$iata == fsub[j,]$airport2,]
inter <- gcIntermediate(c(air1[1,]$long, air1[1,]$lat), c(air2[1,]$long, air2[1,]$lat), n=100, addStartEnd=TRUE)
lines(inter, col="black", lwd=0.8)
}
bubuko.com,布布扣
至此有关R语言的绘图的内容全部结束了,希望对各位小伙伴们有帮助bubuko.com,布布扣

R语言与数据分析之二:绘图

标签:r语言   数据分析   

原文地址:http://blog.csdn.net/howardge/article/details/41681137

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!