7 基本绘图
使用plot调整坐标向量
foo <- c(1.1,2,3.5,3.9,4.2)
bar <- c(2,2.2,-1.3,0,0.2)
plot(foo,bar) #plot简单二维作图plot(x,y)
#x,y的位置不一定为向量,还可以为矩阵
> baz
foo bar
[1,] 1.1 2.0
[2,] 2.0 2.2
[3,] 3.5 -1.3
[4,] 3.9 0.0
[5,] 4.2 0.2
> plot(baz)
图形化参数
type |
如何画出给定坐标 |
main,xlab,ylab |
分别表示图形标题,水平标签,垂直标签 |
col |
设置点和线所使用的颜色 |
pch |
代表点的特征,选择画的单独点所使用 的特征 |
cex |
代表特征扩展,控制所画点的大小 |
lty |
代表线的类型 |
lwd |
代表线宽 |
xlim,ylim |
绘图的水平和垂直范围 |
自动绘图类型
> plot(foo,bar,type="l")
> plot(foo,bar,type="b")
#默认type为“p” 只有点 “l” 只有线 “b” 点线都有 ”o“线覆盖点(消除点和线之间的空隙)
#“n” 没有点和线,建立空的图形
标题和坐标轴标签
plot(foo,bar,type="b",main="My lovely plot",xlab="x axis label",ylab="location y")
plot(foo,bar,type="b",main="My lovely plot\ntitle on two lines",xlab="",ylab="")
#换行符将标题分割成两行
颜色
> plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=2)
>plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col="seagreen4")
#颜色设置最简单的为整数和字符串
点和线的外观
>plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=4,pch=8,lty=2,cex=2.3,lwd=3.3)
>plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=6,pch=15,lty=3,cex=0.7,lwd=2)
#pch和lt设置点和线的外观 点的外观范围[1,25]线的类型为[1,6] cex和lwd分别控制点大小和线宽
绘制区域限制
>plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=4,pch=8,lty=2,cex=2.3,lwd=3.3,xlim=c(-10,5),ylim=c(-3,3))
>plot(foo,bar,type="b",main="My lovely plot",xlab="",ylab="",col=6,pch=15,lty=3,cex=0.7,lwd=2,xlim=c(3,5),ylim=c(-0.5,0.2))
#xlim ylim 需要两个参数,为一个长度为2的数值向量
在已有的图中加点、线和文本
points |
添加点 |
lines abline segment |
添加线 |
text |
添加文本 |
arrows |
添加箭头 |
legend |
添加图例 |
> x <- 1:20
> y <- c(-1.49,3.37,2.59,-2.78,-3.94,-0.92,6.43,8.51,3.41,-8.23,-12.01,-6.58,2.87,14.12,9.63,-4.58,-14.78,-11.67,1.17,15.62)
> plot(x,y,type="n",main="")#第一步绘制能家点的空白区域 "n"打开或刷新的图形配置
> abline(h=c(-5,5),v=c(5,10),col="red",lty=2,lwd=2)#ablin 添加横跨图形的直线 用h=c(a,b,...)添加水平线 v=c(a,b,...)添加垂直线
>segments(x0=c(5,15),y0=c(-5,-5),x1=c(5,15),y1=c(5,5),col="red",lty=3,lwd=2)#在水平线之间加了短直线,x0起点坐标 x1终点坐标
>points(x[y>=5],y[y>=5],pch=4,col="darkmagenta",cex=2)#使用point在图中加具体坐标,根据条件构建子集
>points(x[y<=-5],y[y<=-5],pch=3,col="darkgreen",cex=2)#同上
>points(x[(x>=5&x<=15)&(y>-5&y<5)],y[(x>=5&x<=15)&(y>-5&y<5)],pch=19,cex=1,col="blue")
>points(x[(x<5|x>15)&(y>-5&y<5)],y[(x<5|x>15)&(y>-5&y<5)])#使用默认值
>lines(x,y,lty=4)#lines连接x y坐标
>arrows(x0=8,y0=14,x1=11,y1=2.5)#在代码行添加箭头 x0起点 x1终点
>text(x=8,y=15,label="sweet spot")#添加标签
>legend("bottomleft",legend=c("overall process","sweet","standard","too big","too small","sweet y range","sweet x range"),pch=c(NA,19,1,4,3,NA,NA),lty=c(4,NA,NA,NA,NA,2,3),col=c("black","blue","black","darkmagenta","darkgreen","red","red"),lwd=c(1,NA,NA,NA,NA,2,2),pt.cex=c(NA,1,1,2,2,NA,NA)) #添加图例 legend()第一个参数表示放在位置 (通常“topleft” “topright”“bottomleft”“bottomright”) 然后提供标签向量(字符串),给剩余参数赋值,当不希望相应的图形参数时,向量使用NA填补
ggplot2包
qplot快速绘图
> install.packages("ggplot2") #下载ggplot2
>library("ggplot2")
> foo <- c(1.1,2,3.5,3.9,4.2)
> bar <- c(2,2.2,-1.3,0,0.2)
> qplot(foo,bar) #与plot相比,基本语法相同,x,y向量长度应相同
> plot(foo,bar)
> qplot(foo,bar,