Python 绘制多索引数据帧时的工件
我将数据组织成一个多索引数据框。例:Python 绘制多索引数据帧时的工件,python,pandas,plot,Python,Pandas,Plot,我将数据组织成一个多索引数据框。例: Sweep Time Primary Secondary x720nm x473nm PMTShutter Sweep0001 0.00000 -87.429810 -4.882812 0.000610 0.000305 0.000000 0.00005 -87.445068 -
Sweep Time Primary Secondary x720nm x473nm PMTShutter
Sweep0001 0.00000 -87.429810 -4.882812 0.000610 0.000305 0.000000
0.00005 -87.445068 -4.882812 0.000610 0.001221 0.000000
0.00010 -87.451172 -4.272460 0.000000 0.000916 0.000000
... ... ... ... ...
Sweep0039 0.68655 -87.261963 -4.272461 0.000305 0.000916 0.000305
0.68660 -87.258911 -4.272461 0.000305 0.000916 0.000305
0.68665 -87.252808 -5.493164 0.000000 0.000916 0.000305
0.68670 -87.261963 -4.272461 0.000305 0.000916 0.000305
绘制任何单个扫描都可以,但是当我绘制多个扫描时,我会看到这些基本上是直线的工件(见下文)
这不是matplotlib所特有的,pyqtgraph也是如此
打印单个记录道时不存在问题:
plt.plot(data.Time['Sweep0001'], data.Primary['Sweep0001'])
打印多条记录道时出现问题:
plt.plot(data.Time['Sweep0001':'Sweep0002'], data.Primary['Sweep0001':'Sweep0002'])
数据。时间['Sweep001':'Sweep0002']
正在连接数据。时间['Sweep001']
与数据。时间['Sweep002']
。因此,时间值从0到N,然后再从0到N。
因此,plt.plot
将从t=N
到t=0
绘制一条线,从而产生伪影
相反,每行使用一个plt.plot调用:
for i in range(1, 11):
col = 'Sweep{:04d}'.format(i)
plt.plot(data.Time[col], data.Primary[col])
看起来您的数据可能包含一些异常值。您是否尝试过缩小数据以确定哪些点导致这些尖峰?您指的是垂直尖峰吗?这些是正常的(它们在所有的痕迹中)。我指的是水平线(你可以看到它们在3.0标记附近,那里有向下的过渡),这可能有助于在你的问题中澄清这一点,因为这在你的图表中不容易看到。如果数据顺序不正确,则可能会出现这种情况,因此绘图会向右跳,然后返回到绘图顺序不一致的点。同样,你能缩小问题的范围并提供重现问题的具体数据,以确保问题在绘图中,而不是在你的数据中吗。我不知道你的第二点是什么意思。如果您看我的第二个示例—如果我自己绘制SWEEP001或Sweep0002,则不会出现该工件。我绘制数据的方式很可能有问题,这将是这个问题的答案。我也会把它放在原始帖子中,但是如果我分别绘制它们(即,我分别绘制Sweep0001和Sweep0002),这个问题就不会发生。因此,你在帖子中显示的数据根本不包括一列
Time
。我只是想添加到原始帖子中-如果我分别绘制它们,就不会产生这个问题。使用循环是唯一的方法吗?可以在两个数据集之间插入np.nan
值,但这不是处理此问题的标准方法。通常你只需要使用一个循环。(尝试plt.plot([1,2,np.nan,1,2],[0,1,2,1,2])
看看我的意思。)
for i in range(1, 11):
col = 'Sweep{:04d}'.format(i)
plt.plot(data.Time[col], data.Primary[col])