【问题标题】:Couple of issues with plotting multiple data series in R [duplicate]在 R 中绘制多个数据系列的几个问题 [重复]
【发布时间】:2014-07-27 23:33:30
【问题描述】:

我正在尝试绘制四个不同系列的向量:

1) 广告 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) 努尔 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) 医学 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)

我得到了这个...

我需要帮助的两件事是:

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

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

【问题讨论】:

标签: r ggplot2


【解决方案1】:

如果将值存储在列表中会更容易一些

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)

作为一般规则,您只调用一次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")

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 2019-02-06
    • 2011-02-18
    • 2021-06-10
    • 2016-09-10
    • 2022-12-14
    • 2019-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多