Я хочу сдвинуть несколько графиков друг под друга. Я прочитал в данных как массив с 4-мя столбцами в данных:Сдвиг нескольких графиков друг под другом
# load data for variable intensities
data_with_minimum = []
for i in [6, 12, 25, 50, 100]:
data_with_minimum.append(np.loadtxt('data{0}.dat'.format(i)))
я искать в характерной точке, в этом случае, как минимум в течение первых 5000 строк (я знаю, что всегда есть минимум) и сохранение индексов.
# open arrays for minimum value and index
m = []
mi = []
for k in range(5):
m.append(0)
mi.append(0)
# search minimum in first 5000 data points
for i in range(5000):
if m[k] > data_with_minimum[k][i,1]:
m[k] = data_with_minimum[k][i,1]
mi[k] = i
Наконец, я хочу, чтобы переместить каждый минимум из первого столбца друг под другом:
# shift x-axis
for i in range(30000 - m_max):
for k in range(5):
data_with_minimum[k][i,1] = data_with_minimum[k][i+(mi[k]-min(mi)),1]
К сожалению, это не работает, потому что ценности пересматривают себя. Поскольку я довольно новичок в Python, я застрял. Поэтому любые предложения были бы полезными. Или может быть, в общем, более простой способ решить эту проблему? Мне это кажется неудобным .. Спасибо!
редактировать:
1) К сожалению, я не могу добавлять изображения, потому что я не достаточно очков репутации. Поэтому мне нужно опубликовать эту ссылку shift graphs. Простите за это. Моя цель состоит в том, что минимумы всех графиков находятся в одной и той же точке. Этот график наносили на график с помощью команды:
plt.figure(0)
for i in range(5):
plt.plot(data_with_minimum[i][:,0], data_with_minimum[i][:,1])
Минимальный пример данных:
x y(file1) y(file2) y(file3)
1 5 8 3
2 3 6 1
3 1 5 5
4 2 3 8
5 5 1 10
6 8 3 13
7 10 4 15
8 14 7 18
9 16 10 20
...
это должно стать
x y(file1) y(file2) y(file3)
1 3 3 3
2 1 1 1
3 2 3 5
4 5 4 8
5 8 7 10
6 10 10 13
7 14 - 15
8 16 - 18
9 - - 20
...
с 1 минимальной. Но стоит упомянуть, что было возможно, что после 5000 первых точек данных существует дополнительный минимум. и начало реальных данных одного файла:
0.000000 -1.057758
0.000200 -1.051918
0.000400 -1.063922
0.000600 -1.065220
0.000800 -1.069438
0.001000 -1.065220
0.001400 -1.065545
0.001600 -1.077549
0.001800 -1.072682
0.002000 -1.082416
0.002200 -1.078847
0.002400 -1.090203
0.002600 -1.087283
0.002800 -1.095069
0.003000 -1.090527
0.003200 -1.098314
0.003400 -1.100261
0.003600 -1.108372
0.003800 -1.103505
0.004000 -1.111292
0.004200 -1.107074
0.004400 -1.113887
0.004600 -1.112590
0.004800 -1.127514
0.005000 -1.115510
0.005200 -1.127514
...
2) изменили столбцы строк в проход «в этом случае, как минимум в первых 5000 столбцов»
Я не очень понимаю, что это значит. Не могли бы вы показать пример, очень небольшой набор данных и желаемый результат для этих данных? –
Вы не имеете в виду первые 5000 * рядов * - Вы, кажется, очень много работаете, смотрите на трюки типа: 'a = [1,2,32,3,1, -4,44]; m = min (a); i = a.Индекс (м); print m, i; ' –
, помимо поиска встроенных элементов, таких как min (a), возможно, посмотрите на массивы numpy, а не на списки, они намного быстрее (вы говорите« открытые массивы для минимального значения и индекса », но вы создаете списки в строке после этого) – usethedeathstar