楼主: jpld
3617 1

[学习分享] R in action读书笔记(15)第十一章 中级绘图 之二 折线图 相关图 马赛克图 [推广有奖]

  • 2关注
  • 50粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
1268 个
通用积分
2.1233
学术水平
120 点
热心指数
120 点
信用等级
99 点
经验
1249 点
帖子
192
精华
0
在线时间
271 小时
注册时间
2009-5-29
最后登录
2022-3-1

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

第十一章 中级绘图

本节用到的函数有:

plot


legend


corrgram


mosaic


11.2折线图

如果将散点图上的点从左往右连接起来,那么就会得到一个折线图。

创建散点图和折线图:

  1. > opar<-par(no.readonly=TRUE)
  2. > par(mfrow=c(1,2))
  3. > t1<-subset(Orange,Tree==1)
  4. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference (mm)",main="orange tree 1growth")
  5. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference (mm)",main="orange tree 1growth",type="b")
  6. > par(opar)
复制代码


参数type =的可选值

p


只有点


l


只有线


o


实心点和线(即线覆盖在点上)


b、c


线连接点(c时不绘制点)


s、S


阶梯线


h


直方图式的垂直线


n


不生成任何点和线(通常用来为后面的命令创建坐标轴)


注意,plot()和lines()函数工作原理并不相同。plot()函数是被调用时即创建一幅新图,

而lines()函数则是在已存在的图形上添加信息,并不能自己生成图形。因此,lines()函数通常是在plot()函数生成一幅图形后再被调用。如果对图形有要求,可以先通过plot()函数中的type = n来创建坐标轴、标题和其他图形特征,然后再使用lines()函数添加各种需要绘制的曲线。

展示五种橘树随时间推移的生长状况的折线图:

  1. > opar<-par(no.readonly=TRUE)
  2. > par(mfrow=c(2,4))
  3. > t1<-subset(Orange,Tree==1)
  4. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=p",type="p")
  5. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=l",type="l")
  6. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=o",type="o")
  7. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=b",type="b")
  8. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=c",type="c")
  9. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=s",type="s")
  10. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=S",type="S")
  11. > plot(t1$age,t1$circumference,xlab="Age(days)",ylab="circumference(mm)",main="type=h",type="h")
复制代码


展示五种橘树随时间推移的生长状况的折线图

  1. > Orange$Tree<-as.numeric(Orange$Tree)
  2. > ntrees<-max(Orange$Tree)
  3. > xrange<-range(Orange$age)
  4. > yrange<-range(Orange$circumference)
  5. > plot(xrange,yrange,
  6. +     type="n",
  7. +     xlab="age(days)",
  8. +     ylab="circumference(mm)"
  9. + )
  10. > colors<-rainbow(ntrees)
  11. > linetype<-c(1:ntrees)
  12. > plotchar<-seq(18,18+ntrees,1)
  13. > for(i in 1:ntrees){
  14. +  tree<-subset(Orange,Tree==i)
  15. +  lines(tree$age,tree$circumference,
  16. +        type="b",
  17. +         lwd=2,
  18. +        lty=linetype,
  19. +        col=colors,
  20. +        pch=plotchar
  21. +         )
  22. + }
  23. > title("tree growth","example of lineplot")
  24. > legend(xrange[1],yrange[2],
  25. +        1:ntrees,
  26. +        cex=.8,
  27. +       pch=plotchar,
  28. +       lty=linetype,
  29. +       title="tree")
复制代码


11.3 相关图

利用corrgram包中的corrgram()函数,可以以图形方式展示该相关系数矩阵

  1. > library(corrgram)
  2. > corrgram(mtcars,order=TRUE,lower.panel=panel.shade,
  3. +          upper.panel=panel.pie,text.panel=panel.txt,
  4. +          main="correlogram of mtcarsintercorrelations")
复制代码


默认地,蓝色和从左下指向右上的斜杠表示单元格中的两个变量呈正相关。反过来,红色和从左上指向右下的斜杠表示变量呈负相关。色彩越深,饱和度越高,说明变量相关性越大。相关性接近于0的单元格基本无色。本图为了将有相似相关模式的变量聚集在一起,对矩阵的行和列都重新进行了排序(使用主成分法)。从图中含阴影的单元格中可以看到,gear、am、drat和mpg相互间呈正相关,wt、disp、hp和carb相互间也呈正相关。但第一组变量与第二组变量呈负相关。还可以看到carb和am、vs和gear、vs和am以及drat和qsec四组变量间的相关性很弱。上三角单元格用饼图展示了相同的信息。颜色的功能同上,但相关性大小由被填充的饼图块的大小来展示。正相关性将从12点钟处开始顺时针填充饼图,而负相关性则逆时针方向填充饼图。

corrgram()函数的格式如下:

corrgram(x, type=NULL, order = FALSE, labels,panel=panel.shade,

lower.panel=panel,upper.panel=panel,diag.panel=NULL,text.panel=textPanel,label.pos=c(0.5, 0.5), label.srt=0, cex.labels=NULL,font.labels=1,row1attop=TRUE, dir="",gap=0,abs=FALSE,col.regions=colorRampPalette(c("red","salmon","white","royalblue","navy")),cor.method="pearson", ...)

可以通过选项lower.panel 和upper.panel来分别设置主对角线下方和上方的元素类型。而text.panel和diag.panel选项控制着主对角线元素类型。


在下三角区域使用平滑拟合曲线和置信椭圆,上三角区域使用散点图:

  1. > library(corrgram)
  2. > corrgram(mtcars,order=TRUE,lower.panel=panel.ellipse,
  3. +          upper.panel=panelNaNs,text.panel=panel.txt,
  4. +          lwd=1.5,diag.panel=panel.minmax,
  5. +          main="correlogram of mtcars using\nscatter plots and ellipse")
复制代码


mtcars数据框中变量的相关系数图。下三角区域包含平滑拟合曲线和置信椭圆,上三角区域包含散点图。主对角面板包含变量最小和最大值。矩阵的行和列利用主成分分析法进行了重排序

  1. > library(corrgram)
  2. > corrgram(mtcars,lower.panel=panel.shade,
  3. +          upper.panel=NULL,text.panel=panel.txt,
  4. +          lwd=1.5,
  5. +          main="Car mileage data(unsorted)")
复制代码


下三角区域使用了阴影,并保持原变量顺序不变,上三角区域留白。下三角区域的阴影代表相关系数的大小和正负。变量按初始顺序排列.

11.4 马赛克图

若只观察单个类别型变量,可以使用柱状图或者饼图;若存在两个类别型变量,可以使用三维柱状图;若有两个以上的类别型变量,一种办法是绘制马赛克图(mosaic plot)。在马赛克图中,嵌套矩形面积正比于单元格频率,其中该频率即多维列联表中的频率。颜色和/或阴影可表示拟合模型的残差值。vcd包中的mosaic()函数可以绘制马赛克图

  1. > ftable(Titanic)
  2.                   Survived  No Yes
  3. Class Sex   Age                  
  4. 1st   Male   Child            0  5
  5.             Adult          118  57
  6.       FemaleChild            0   1
  7.             Adult            4 140
  8. 2nd   Male   Child            0 11
  9.             Adult          154  14
  10.       FemaleChild            0  13
  11.              Adult           13 80
  12. 3rd   Male   Child           35 13
  13.             Adult          387  75
  14.       FemaleChild           17  14
  15.             Adult           89  76
  16. Crew  Male   Child            0  0
  17.             Adult          670 192
  18.       FemaleChild            0   0
  19.             Adult            3  20
复制代码

mosaic()函数可按如下方式调用

mosaic(table)

其中table是数组形式的列联表。另外,也可用:

  1. > library(vcd)
  2. > mosaic(Titanic,shade=TRUE,legend=TRUE)
复制代码

  1. > library(vcd)
  2. > mosaic(~Class+Sex+Age+Survived,data=Titanic,shade=TRUE,legend=TRUE)
复制代码


按船舱等级、乘客性别和年龄层绘制的泰坦尼克号幸存者的马赛克图

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Action 读书笔记 马赛克 相关图 CTI 读书笔记 action 马赛克 orange 连接点

沙发
offandon 发表于 2015-6-23 21:51:14 |只看作者 |坛友微信交流群
谢谢分享。。。。。。。。。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 20:32