87.如何在已有图形上加一条水平线
使用低水平绘图命令abline(),它可以作出水平线(y值h=)、垂线(x值v=)和斜线(截距a=,斜率b=)。
R中的绘图命令可以分为“高水平”(Highlevel)、“低水平(Lowlevel)”和“交互式”(Interactive)三种绘图命令。
简要地说,“高水平”绘图命令可以在图形设备上绘制新图;“低水平”绘图命令将在已经存在图形上添加更多的绘图信息,如点、线、多边形等;使用“交互式”绘图命令创建的绘图,可以使用如鼠标这类的定点装置来添加或提取绘图信息。在已有图形上添加信息当然要使用“低水平”绘图命令。
88.如何做密度曲线?
常用的办法是:做出x的一个序列,然后做出
x=seq(?3,3,.05)
2
dfunction(x),比如:
plot(x,dnorm(x),type=\)lines(x,dt(x,1),col=\)
dfunction(x)中的function是指分布族,可以参考R-intro中的Probabilitydistributions章节,或
help.search(”distribution”)。关于构造相关分布函数参考第17页中“如何模拟高斯分布数据”。
R中的分布函数
分布
beta
R函数betabinomchisqunifexpfgammahypernormpoistweibull
附加参数
shape1(α),shape2(β)size(n),prob(p)df
min(a),max(b)rate
df1(r1),df2(r2)shape(α),scale(θ)m=N1,n=N2,k=nmean(μ),sd(σ)lamda(λ)df
shape(α),scale(θ)
默认参数
二项
χ2均匀指数F伽玛超几何正态泊松t
威布尔
89.如何加图例?
min=0,max=1rate=1scale=1mean=0,sd=1
scale=1
绘制图形后,使用legend函数,help(”legend”)
1
with(iris,plot(Sepal.Length,Sepal.Width,
pch=as.numeric(Species),cex=1.2))
20
3
legend(6.1,4.4,c(\,\,\),
cex=1.5,pch=1:3)
90.怎么做饼图?
参考pie()函数。饼图展示数据的能力较差,因为我们的眼睛对长度单位比较敏感,而对关联区域和角度感觉较差。建议使用条形图(barchart)和点图(dotchart)。
91.如何做茎叶图?
参考stem函数。
stem(faithful$eruptions)92.
R如何做双坐标图?
在R中可以通过绘图参数par(new=TRUE)使得绘制第二个绘图(hight-levelplot)时保留第一个绘图区域,这样两张绘图会重叠在一起,看起来就是双坐标图。下面的例子是在同一张图上绘制GDP和失业率(UR):
1
year1995:2005
x1
axis(1,at=year,label=year);axis(2)par(new=T,mar=c(10,4,10,6)+0.1)
plot(x2,axes=FALSE,xlab=\,ylab=\,col=\,type=\)mtext(\,4,3,col=\)axis(4,col=\,col.axis
=\)
3
5
7
9
但不推荐使用双坐标图来进行数据描述,这样很容易造成误解。并且在R中做出并排图形作对比很容易,没有必要绘制双坐标图。
93.如何为绘图加入网格?
使用grid()函数,
plot(1:3)
2
grid(NA,5,lwd=2)
#gridonlyiny?direction
94.如果绘图时标题太长,如何换行?
可以使用strwrap函数,这个函数可以将定义段落格式。
plot(0,main=paste(strwrap(\isareallylongtitlethat
2
icannottypeitproperly\,width=50),
21
collapse=\))
95.可以打开多个图形设备么?
可以。当打开多个图形设备后,使用dev.list()察看图形设备的数目(除了设备一),使用dev.cur()察看当前使用的图形设备,dev.set()改变激活指定的图形设备,dev.o?()关闭图形设备。
96.坐标y上的数字如何水平放置?
仍然是绘图参数问题:
1
?par
#seelas
plot(0,0,xaxt=\,type=\,ylim=c(0,100),las=1)
3
mtext(\,side=2,at=35,line=1,las=1)97.常用的绘图设备都有哪些?
R支持的图形设备有如下几种(参考?Devices):
R图形设备
名称
屏幕显示
x11windowspostscriptpdfpictex
描述
X窗口
Windows窗口ps格式文件pdf格式文件
A供LTEX使用的文件png格式文件jpeg格式文件bmp格式文件
供XFIG使用的图形格式
emf格式的文件
文件设备
pngjpegbmpx?gwin.meta?le
a
a仅在Windows下有效
这里推荐使用postscript()函数,因为ps图形格式为矢量绘图格式,且通用性较强。
98.如何做雷达图?
R里面使用stars函数来做雷达图。
1
stars(state.x77[,c(7,4,6,2,5,3)],full=FALSE,
key.loc=c(10,2))
这里的的full=FALSE参数表示只绘制雷达图的上半部分(反之,绘制整个雷达图);key.loc参数表示基准图例的位置。
99.为什么R不能显示8种以上的颜色?
当绘图参数col使用数字来代替颜色名时会有这种情形,这是因为R内置调色板默认为8种颜色:
22
palette()
2
barplot(rnorm(15,10,3),col=1:15)palette(rainbow(15))
barplot(rnorm(15,10,3),col=1:15)palette(\)
4
在R中共有657种颜色名称可以使用,它们的名称可以通过
1
colors()
来得到,但事实上有些颜色名称代表的颜色重复,R中颜色名称只能显示502种颜色。当然可以使用函数rgb()来指定任意色彩。
100.如何用不同的颜色来代表数据?
高级绘图函数一般都有col参数可以设置。对于像barplot()这类图形,可以使用“颜色组”(colorsets)来设置颜色,颜色组包括如下几类:
R颜色组函数
名称
rainbow()heat.colors()terrain.colors()topo.colors()cm.colors()gay()、grey()
1
描述
彩虹色
红色至黄色绿色、棕色至白色深蓝色至浅棕色浅蓝到白色,浅紫色
灰色
(??????????????)(??????????????)(??????????????)(??????????????)(??????????????)(??????????????)
x1:10;names(x)
barplot(x,col=rev(heat.colors(10)))
3
barplot(x,col=gray((1:10)/10));101.怎样将R的颜色同RGB对应起来?
参考函数col2rgb()
1
write.table(t(col2rgb(rainbow(7))/255),sep=\)102.如何调整所绘图形的大小?
Windows平台下,正常情况打开绘图窗口,调整窗口大小,点击菜单直接保存,或使用savePlot()
函数保存;当然也可以事先用
1
windows(width=,height=)
打开一个定义好大小的窗口,然后绘图;还可以使用pdf(),postscript(),png(),jpeg(),pictex()等“后台生成”函数,
23
1
##startaPDFfile
pdf(\,height=4,width=6)
3
##yourdrawing
###
commandsclose
the
herePDF
file
dev.off()
这些函数都有设置图形大小的参数;还可以使用
dev.copy(device,file=\,height,width)
命令。
103.如何模拟布朗运动?
布朗运动可以用标准正态的随机模拟值的累积和来模拟:
1
#twodimensions
n100
3
x
5
如果已知做出这些点的函数可以使用curve(expr,from,to,add=T)函数。反之,使用立方曲线差值函数spline(x,y,n=),如:
1
x1:5
y
sp
105.网格(lattice)绘图和普通绘图有什么区别?
3
5
网格(lattice)绘图实际上是S-plus中Trellis绘图在R中的实现,是多元数据可视化的方法。网格绘图相对于普通绘图来说,是一种拥有“固定格式”的绘图方式,当然它相对来说较难修改。如果数据分属不同的类别,需要将这些类别下的数据进行比较,网格绘图是很不错的选择:
1
library(lattice)
histogram(?height|voice.part,data=singer)
常用的lattice绘图函数有:
24