我需要将一些光谱数据绘制成二维图像,其中每个数据点对应一个具有特定日期/时间的光谱。我需要绘制所有光谱,如下所示: -xx轴-对应于波长 -yy轴-对应于日期/时间 -强度-对应于通量
如果我的数据点在时间上是连续的/连续的,我只会使用matplotlib的imshow。然而,不仅这些点在时间上不是连续的/连续的,而且我在点之间有很大的时间间隔
以下是一些模拟数据,模拟了我所拥有的:
import numpy as np
sampleSize = 100
data={}
for time in np.arange(0,5):
data[time] = np.random.sample(sampleSize)
for time in np.arange(14,20):
data[time] = np.random.sample(sampleSize)
for time in np.arange(30,40):
data[time] = np.random.sample(sampleSize)
for time in np.arange(25.5,35.5):
data[time] = np.random.sample(sampleSize)
for time in np.arange(80,120):
data[time] = np.random.sample(sampleSize)
如果我只需要打印上面数据的一个子集;我会做:
mplt.imshow([data[time] for time in np.arange(0,5)], cmap ='Greys',aspect='auto',origin='lower',interpolation="none",extent=[-50,50,0,5])
mplt.show()
但是,我不知道如何在同一绘图中打印所有数据,同时显示间隙并保持yy轴作为时间。有什么想法吗
谢谢你, 豪尔赫
最后我采用了不同的方法:
1)重新索引我的数据中的时间,以便没有两个数组具有相同的时间,并且我避免使用非整数索引
2)创建一个零数组,其中列数与我的数据相同,行数与我的最大重新索引时间相对应
3)替换我的时间对应的零数组中的行
4)像我通常那样绘制一个没有间隙的数组
或者可以使用
pandas
来帮助您排序键,然后reindex
:输出:
相关问题 更多 >
编程相关推荐