更新:找到了一个粗略的解决方案,该解决方案仅适用于R中的
我希望能够绘制这样的图表,每当线条重叠时,它们相对于线条数量会更加粗细。因此,当值从1开始到1结束时,如果有更多的线在同一时间点具有相同的转换,则该线将更加粗细。
相同的数据也可以表示为转换频率。
这听起来像是一个常见的问题。我找到了一些关于如何改变厚度的答案,但并没有真正涉及到频率的基础。有人能指点我正确的方向吗?谢谢!
更新:最终每条线(X1、X2、X3)应该在时间t1:t4中被跟踪,时间在x轴上,值在y轴上。就像下面的图片(使用下面的初步解决方案生成)。也许R中有更好的图形工具。
plot()
函数,但是它会受益于更好的图形。有什么想法吗?这是另一种绘图水平,但潜在地,向增加厚度的过渡可能是逐渐的。
我在R中有一个简单的数据框。
dft <- data.frame(line=c(rep("X1",4),rep("X2",4),rep("X3",4)),+
time=rep(c("t1","t2","t3","t4"),3), value=c(0,1,1,1,0,0.5,1,1,0,0,1,1))
> dft
line time value
1 X1 t1 0.0
2 X1 t2 1.0
3 X1 t3 1.0
4 X1 t4 1.0
5 X2 t1 0.0
6 X2 t2 0.5
7 X2 t3 1.0
8 X2 t4 1.0
9 X3 t1 0.0
10 X3 t2 0.0
11 X3 t3 1.0
12 X3 t4 1.0
我希望能够绘制这样的图表,每当线条重叠时,它们相对于线条数量会更加粗细。因此,当值从1开始到1结束时,如果有更多的线在同一时间点具有相同的转换,则该线将更加粗细。
相同的数据也可以表示为转换频率。
transitions <- data.frame(line=character(), generation=character(), t0=numeric(),t1=numeric())
for (line in unique(dft$line)){
for (number in 1:3) {
generation= c("t1","t2","t3","t4")[number]
generation2= c("t1","t2","t3","t4")[number+1]
transitions <- rbind(transitions, data.frame(line=line, generation=generation, t0=dft[dft$line == line & dft$time == generation ,]$value, t1=dft[dft$line == line & dft$time == generation2 ,]$value))
}
}
> transitions
line generation t0 t1
1 X1 t1 0.0 1.0
2 X1 t2 1.0 1.0
3 X1 t3 1.0 1.0
4 X2 t1 0.0 0.5
5 X2 t2 0.5 1.0
6 X2 t3 1.0 1.0
7 X3 t1 0.0 0.0
8 X3 t2 0.0 1.0
9 X3 t3 1.0 1.0
这听起来像是一个常见的问题。我找到了一些关于如何改变厚度的答案,但并没有真正涉及到频率的基础。有人能指点我正确的方向吗?谢谢!
更新:最终每条线(X1、X2、X3)应该在时间t1:t4中被跟踪,时间在x轴上,值在y轴上。就像下面的图片(使用下面的初步解决方案生成)。也许R中有更好的图形工具。
plot(as.numeric(dft$time), dft$value, type="l")
。 - Roman