绘制随着时间的推移对3级因子的反应

时间:2013-11-23 04:11:35

标签: r plot

我是R的新手,想知道如何随着时间的推移绘制事物。

我的部分实验涉及使葡萄藤受到不同程度的水分胁迫。我的因变量是植物中水分胁迫(叶水势)的量度(以MPa计)。我的3级因子包括三种灌溉治疗。我有四个块,但有些数据丢失了,所以数据集有点不平衡。 (我实际上有两个主要因素,但我现在会保持简单)。以下是一些数据的味道:

  date    blk  trt  lwp
05/26/13    2   LD  -1
05/26/13    3   LD  -0.73
05/26/13    4   LD  -0.78
05/26/13    2   SD  -1.15
05/26/13    3   SD  -0.8
05/26/13    4   SD  -0.93
05/26/13    2   ED  -1.2
05/26/13    3   ED  -1.38
05/26/13    4   ED  -1.2
06/20/13    1   LD  -1
06/20/13    2   LD  -1.03
06/20/13    3   LD  -1.05
06/20/13    4   LD  -0.8
06/20/13    1   SD  -1.3
06/20/13    2   SD  -1.28
06/20/13    3   SD  -1.2
06/20/13    4   SD  -1.13
06/20/13    1   ED  -1.35
06/20/13    2   ED  -1.3
06/20/13    3   ED  -1.13
06/20/13    4   ED  -1.08

我已经设法弄清楚如何将日期变成正确的格式,我知道如何制作非常基本的图(y~x类型),但这就是它。

我希望能够在同一个图表上随时间绘制每个治疗方案。那样我有三条线,x轴是按周,y轴是MPa。

2 个答案:

答案 0 :(得分:0)

尝试以下两个示例,具体取决于您希望如何处理块值:

d <- read.table("your.data.file.txt", header=T)

# recreate data.frame with correct classes
df <- data.frame(
date = as.Date(strptime(d$date, "%m/%d/%y")),
blk = as.factor(d$blk),
trt = as.factor(d$trt),
lwp = as.numeric(d$lwp))

1:从平均块值绘制时间趋势。单个块值显示为参考

# require(ggplot2)
ggplot(data=df, aes(x=date, y=lwp, col=trt)) + geom_point() + 
geom_line(stat="summary", fun.y="mean")

要清楚地区分处理,请将+ facet_wrap(~trt, ncol=3)添加到上面的代码中。

2:在匹配的块值之间绘制时间趋势。不匹配的值未连接

# require(ggplot2)    
ggplot(data=df, aes(x=date, y=lwp, col=trt, group=trt:blk)) + geom_point() + 
geom_line()

如上所述,facet_wrap可用于分隔治疗。

具有匹配块值的示例如下所示。通过添加facet_wrap函数生成右边的图形:

enter image description here

答案 1 :(得分:0)

试试这个(如果你想要汇总块)

# if you haven't installed this before, run:> install.packages("ggplot2")
require(ggplot2)

#import the file (I'd saved it to text)
myts<-read.table(file="ts.txt",header=TRUE,sep=" ", row.names=NULL)
# force the date column to Date format
myts$date<-as.Date(myts$date, format="%m/%d/%y")

# I guess you want to average the blocks?
rollup<-aggregate(lwp ~ date * trt, data=myts, FUN=mean)

# call the plot
ggplot(data=rollup) + 
# plot x~y, the col command groups by trt
geom_line(aes(x=date, y=lwp, col=trt))

enter image description here