问题描述
在Matlab中我用 csvread(path) 读取的数据,一般都是在工作区中以一个 m × n double 的矩阵存在,每一列 或者 每一行 表示一个样品,在绘制每一个样品对应的谱线时,我使用的老办法都是:对每一行 或者 每一列 进行切片, 然后再单独绘制每一条谱线,使用 hold on 语句把每条谱线都绘制到同一个 figure上面。
但是,这样做我感觉非常傻,有点累,虽然这样对于设置每条曲线的样式、颜色、legend都更加灵活,但是当谱线比较多时就显得有些麻烦!
所以,我一直在寻找有没有什么简单的方法,可以直接将一个矩阵绘制出多条谱线的方法,就是这么巧,在CSDN一篇文章的评论区里,看到了一个简单的方法:
那就是直接 plot(X),X就是数据矩阵,但是对于矩阵X的行列设置还是有要求的!
问题解决
举例,X 是一个 6 × 1951 double 的矩阵,表示6条近红外光谱(来自朋友赞助的数据)
如果直接 plot(X),如下图:
正解应该是先 转置 再绘图,plot(X'),如下图:
总结
如果谱线数据,每一行表示一个样品,那么 同时绘制多条数据的时候,先转置再绘图
plot ( X' )
开放讨论
有一个问题是,一旦直接 plot 整个矩阵,那么,想单独调整 每一条谱线的样式、线宽、线形、颜色、legend的话,是不是就没办法了,希望有好办法的同学们可以再评论区下方讨论,大家相互交流学习,哈哈~