2014-11-17 6 views
0

У меня есть данные, собранные в мультииндексный фрейм. Пример:Артефакт при построении мультииндекса pandas dataframe

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.

Issue нет при построении единого следа:

plt.plot(data.Time['Sweep0001'], data.Primary['Sweep0001']) 

enter image description here

Издание настоящего раз черчения множественные следы:

plt.plot(data.Time['Sweep0001':'Sweep0002'], data.Primary['Sweep0001':'Sweep0002']) 

enter image description here

plt.plot(data.Time['Sweep00-1':'Sweep0010'], data.Primary['Sweep0001':'Sweep0010']) 

enter image description here

+0

Похоже, ваши данные могут включать в себя несколько выбросов. Вы пробовали сбрасывать данные, чтобы точно определить, какие точки вызывают эти всплески? – BrenBarn

+0

Вы имеете в виду вертикальные шипы? они нормальные (они находятся во всех следах). Я имею в виду горизонтальные линии (вы можете увидеть их вокруг отметки 3.0, где есть переходный переход) – user3014097

+0

Может быть, это хорошо, чтобы уточнить это в вашем вопросе, так как это не легко увидеть на ваших графиках. Они могут возникнуть, если данные не находятся в правильном порядке, так что график переходит вправо, а затем назад, чтобы построить точку вне последовательности. Опять же, можете ли вы сузить проблему и предоставить конкретные данные, которые будут воспроизводить ее, чтобы убедиться, что проблема находится в сюжете, а не в ваших данных? – BrenBarn

ответ

1

data.Time['Sweep001':'Sweep0002'] является конкатенация data.Time['Sweep001'] с data.Time['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]) 
+0

Я просто собирался добавить к исходному сообщению - если я закладываю их отдельно, это не вызывает этой проблемы. Использует ли цикл единственный способ сделать это? – user3014097

+0

Ну, вы можете вставить значение «np.nan» между двумя наборами данных, но это не стандартный способ справиться с этой проблемой. Обычно вы просто используете цикл. (Попробуйте 'plt.plot ([1,2, np.nan, 1,2], [0,1,2,1,2])', чтобы понять, что я имею в виду.) – unutbu

Смежные вопросы