我正在进行一些线路绘图。我有这个矩阵:
[,1] [,2] [,3]
1 0.1 0.2 0.3
2 0.5 1.0 1.5
3 1.0 1.5 2.0
4 1.5 2.0 2.5
我计算每个矩阵列的 L1范数。因此,每列的标准将是[1] 3.1 4.7 6.3
L1范数将是x轴。每个矩阵行都是y轴。
因此,对于 x [1] 3.1 4.7 6.3
和 y 0.1 0.2 0.3
,我会绘制一行。
对于 x [1] 3.1 4.7 6.3
和 y 0.5 1.0 1.5
我会绘制另一条直线,依此类推。
以下是代码:
mat=matrix(c(0.1,0.5, 1, 1.5, 0.2, 1, 1.5 ,2,0.3, 1.5, 2, 2.5), nrow=4, ncol=3)
rownames(mat) <- seq_len(nrow(mat))
norm1=as.vector(rep(0,3))
for (i in 1:3) {
norm1[i]=norm(as.matrix(mat[,i]))
}
y1=c(0.1, 0.2, 0.3)
y2=c(0.5,1.0,1.5)
y3=c(1.0,1.5,2)
y4=c(1.5,2,2.5)
plot(norm1,y1, type = "l", xlim=c(3,7), ylim=c(0,3))
lines(norm1,y2)
lines(norm1,y3)
lines(norm1,y4)
还有其他方法可以让我的绘图更简单,更短吗?如果我有一个矩阵100x20,我必须为每行写y1=c(0.1, 0.2, 0.3)
并添加到许多lines(norm1,y4)
。
答案 0 :(得分:1)
不确定
# automated lims here, you can easily override
plot(NA, xlim=range(norm1), ylim=range(mat))
for (r in seq_len(nrow(mat))) lines(norm1, mat[r,])
答案 1 :(得分:1)