大家好,我遇到了将数据分组并在ggplot()
中进一步绘制的问题。我的数据由几列组成,其中4个第一列(全部在一起)对应于“样本ID”,另外两列是Zeit(以秒为单位的时间)和Temp。
我需要为每个样本绘制时间与温度的关系图,但是根据他们的ID对它进行分组是非常有意义的,目前我无法弄明白。
示例数据:
> dput(sampledata)
structure(list(a = c(703210L, 703210L, 703210L, 703210L, 703210L,
703210L, 703210L, 703210L, 703210L, 703210L, 703210L, 703210L,
703210L, 703210L, 703210L, 703210L, 703210L, 703210L, 703210L,
703210L), b = c(3988L, 3988L, 3988L, 3988L, 3988L, 3988L,
3988L, 3988L, 3988L, 3988L, 3988L, 3988L, 3988L, 3988L, 3988L,
3988L, 3988L, 3988L, 3988L, 3988L), c = c(1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L
), d = c(1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L,
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L), Zeit = c(0L, 240L, 300L, 420L, 540L, 546L,
0L, 180L, 300L, 360L, 540L, 546L, 0L, 180L, 300L, 360L, 540L,
545L, 0L, 120L), Temp = c(913L, 675L, 570L, 514L, 515L, 355L,
867L, 687L, 575L, 543L, 518L, 437L, 874L, 690L, 577L, 562L, 529L,
455L, 856L, 721L)), .Names = c("a", "b", "c", "d",
"Zeit", "Temp"), row.names = 2317:2336, class = "data.frame")
相同的数据,但格式我可以用4列定义样本ID的确切解释我的意思:
a b c d Zeit Temp
2317 703210 3988 1 1 0 913
2318 703210 3988 1 1 240 675
2319 703210 3988 1 1 300 570
2320 703210 3988 1 1 420 514
2321 703210 3988 1 1 540 515
2322 703210 3988 1 1 546 355
2323 703210 3988 1 3 0 867#here starts the new sample (d=3)
2324 703210 3988 1 3 180 687
2325 703210 3988 1 3 300 575
2326 703210 3988 1 3 360 543
2327 703210 3988 1 3 540 518
2328 703210 3988 1 3 546 437
2329 703210 3988 2 4 0 874#here starts the new sample (c=2)
2330 703210 3988 2 4 180 690
2331 703210 3988 2 4 300 577
2332 703210 3988 2 4 360 562
2333 703210 3988 2 4 540 529
2334 703210 3988 2 4 545 455
2335 703210 3988 3 5 0 856#here starts the new sample (c=3 & d=5)
2336 703210 3988 3 5 120 721
依此类推......它恰好发生在& b更改,因此所有这4列都定义了样本ID
我试图在ggplot()
轻松地绘制它:
ggplot(sampledata, aes(x=Zeit, y=Temp)) + geom_line(size=1.5) #however it was total chaos
我尝试使用interaction()
:
ggplot(sampledata, aes(x=Zeit, y=Temp, group=interaction(a,b,c,d))) + geom_line(size=1.5)
我也得到了非常混乱的情节......
任何人都知道如何绘制它?
感谢您的任何建议!
答案 0 :(得分:2)
您可以在数据集中创建一个id变量,然后在绘图中将颜色作为id。以下是代码:
library(data.table)
library(ggplot2)
sampledata <- data.table(sampledata)
sampledata[, id:=paste(a,b,c,d, sep="_")]
ggplot(sampledata, aes(x=Zeit, y=Temp, color=id)) + geom_line(size=1.5)
使用颜色参数,您可以清楚地看到不同的样本。希望这可以帮助。 :)