在R中绘制多个数据系列的几个问题

时间:2014-07-27 23:33:31

标签: r ggplot2

我试图绘制四种不同的向量系列:

1)adm   7 9 46 11 52 29 25 62

2)轻拍   35 29 24 19 22 21 42 23 34 12 28 17 11 15 16 14 27 20 8 38 10 10 14 22  22 23 24 24 24

3)nur   41 49 42 59 58 23 35 31 20 44 56 29 57 50 33 46 28 17 15 17 28 44 46 49  50 57 58

4)med   23 51 44 54 26 15 33 41 34 42 39

我尝试以下方法在同一图上绘制多个数据系列:

plot(pat,type="l",xlab="Degree",ylab="Count",col="blue4")
par(new=T)
plot(adm,type="l",xlab="Degree",ylab="Count",col="red4")
par(new=T)
plot(med,type="l",xlab="Degree",ylab="Count",col="green4")
par(new=T)
plot(nur,type="l",xlab="Degree",ylab="Count",col="black")
par(new=F)

我得到了这个...... enter image description here

我需要帮助的两件事是:

1)为每条线与其数据源匹配的图形创建一个图例。

2)修复图中的重叠标签(我的意思是x和y轴上的值)

1 个答案:

答案 0 :(得分:3)

如果将值存储在列表中

,会更容易一些
dd<-list(
  adm=c(7,9,46,11,52,29,25,62),           
  pat=c(35,29,24,19,22,21,42,23,34,12,28,17,11,15,16,
        14,27,20,8,38,10,10,14,22,22,23,24,24,24),
  nur=c(41,49,42,59,58,23,35,31,20,44,56,29,57,50,33,
        46,28,17,15,17,28,44,46,49,50,57,58),
  med =c(23,51,44,54,26,15,33,41,34,42,39)
)

ylim=c(0, max(sapply(dd, range)))
xlim=c(0, max(sapply(dd, length)))    
cols<-c("blue4","red4","green4","black")

plot(dd[[1]], xlab="Degree", ylab="Count", col=cols[1], type="l", xlim=xlim, ylim=ylim)
for(i in 2:4) {
    lines(dd[[i]], col=cols[i])
}
legend(x=25,50, names(dd), col=cols, lty=1)

enter image description here

作为一般规则,您只需拨打plot一次;然后,如果您需要添加数据,最好使用不重新绘制轴的points()lines()

lattice这样的图书馆倾向于使分组图更容易

library(lattice)
xyplot(values~idx, transform(stack(dd), idx=ave(values, ind, FUN=seq_along)), 
    group=ind, auto.key=list(lines=T, points=F, columns=2), type="l")

enter image description here