r - R:使用curveid绘制的多行线

r - R:使用curveid绘制的多行线,第1张

我是研究员,而不是程序员。

我经常使用drc包来分析数据。在那里你可以定义一个曲线,它将在一个图中绘制多条线。

我需要同样的事情只是为了正常情节,但显然我的知识很少这样做:(

我的数据如下:

  Time        Type   Material      Value1      Value2
1    1          A          X          34        123
1    3          A          X          44        164
1    1          B          X          56        234
1    2          B          X          23        145
1    3          B          X          45        343
1    1          A          Y          45        243

...

现在我想要,例如,首先是一个绘图Value1~Time,并且每个Materong class="superseo">rial都有一个自己的行。然后可能是Value2~Time并且每个Type都有一个自己的行。

意图是一个脚本,你在开头声明哪个列包含x,哪个是y,哪个是curveid。它会像drc包一样绘制它。

我尝试使用split()subset,然后使用cbindmatplot,但我遇到了问题,因为有时会丢失时间值。

我还想尝试reshape2,但无法安装该软件包。

是否有一些更简单的解决方案(类似于drc)包?

感谢您的帮助

最佳答案:

1 个答案:

答案 0 :(得分:0)

你有重复(材料,类型)的情况,线条似乎没有被占用。试一试,使用积分。

tms=range(df[,"Time"])
ylims=range(df[,c("Value1","Value2")])
plot(NA,type="n",xlim=tms,ylim=ylims,xlab="Time",ylab="Val")
df=df[with(df,order(Material,Time)),]
mats=unique(df$Material)
sapply(1:length(mats),function(ma){points(df[df$Material==mats[ma],"Time"],
                        df[df$Material==mats[ma],"Value1"],
                         col=ma,pch=15  )
})
df=df[with(df,order(Type,Time)),]
library(RColorBrewer)
coly<-brewer.pal(8,"Accent")[8:1]
typs=unique(df$Type)
sapply(1:length(typs),function(ma){points(df[df$Type==typs[ma],"Time"],
                                           df[df$Type==typs[ma],"Value2"],
                                         col=coly[ma],pch=15 ma  )
})
legend("top",c(mats,typs),pch=c(rep(15,length(mats)),15 1:length(typs)),
       col=c(palette()[1:length(mats)],coly[1:length(typs)]),horiz=T)

你将

r - R:使用curveid绘制的多行线,enter image description here,第2张

本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复