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

图形展示是最高效且形象的数据描述手段,因此巧妙的图像展示是高质量数据分析报告的必备内容,因此强大的图形展示功能也是统计分析软件的必备功能。R语言提供了强大的吐血展示功能。今天我由简单到复杂分别和小伙伴们分享如何用R语言画出各位想要的图形。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1EkYlSJt-1625743022224)(http://static.blog.csdn.net/xheditor/xheditor_emot/default/struggle.gif)]

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

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))

![](https://img-
blog.csdn.net/20141202170725890?/gravity/Center)

![](https://img-
blog.csdn.net/20141202170801334?/gravity/Center)

基本统计–多指标

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

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

![](https://img-
blog.csdn.net/20141202171001875?/gravity/Center)

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

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

![](https://img-
blog.csdn.net/20141202171050392?/gravity/Center)

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

    stem(X$X2)
[/code]

![](https://img-
blog.csdn.net/20141202171234974?/gravity/Center)  

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

​```code
    qqnorm(X3)
    qqline(X3)

![](https://img-
blog.csdn.net/20141202171333115?/gravity/Center)

地图专栏

最后为大家介绍R语言提供的丰富的地图包功能,首先需要安装maps包,可以用来画出漂亮的世界地图,供我们做社交网络分析。遗憾的是该包不包含中国地图包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Oj9nawg3-1625743022228)(http://static.blog.csdn.net/xheditor/xheditor_emot/default/sad.gif)]
,如若需要绘制中国地图,以方面建议加载mapdata包,另一方面,强烈建议谷歌贡献的ggmap包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pcb4qzmq-1625743022230)(http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif)]
,相关命令如下:

    library(maps)
    map("world",fill=TRUE,col=rainbow(200),ylim=c(-60,90),mar=c(0,0,0,0))

![](https://img-
blog.csdn.net/20141202171520859?/gravity/Center)

    library(mapdata)
    map("china",col="red4",ylim=c(18,54),panel.first=grid())

![](https://img-
blog.csdn.net/20141202171645343?/gravity/Center)

最后以一个航空公司航线分布案例,结束今天的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)
    }

![](https://img-
blog.csdn.net/20141202171741795?/gravity/Center)
至此有关R语言的绘图的内容全部结束了,希望对各位小伙伴们有帮助
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vYnTiGum-1625743022233)(http://static.blog.csdn.net/xheditor/xheditor_emot/default/smile.gif)]

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

上一篇:关于数组的初始化


下一篇:JavaScript之fill、map