Это не график, а картинка. В любом случае вы можете начать следующим образом.
Вы можете загрузить изображение с помощью scipy
. Затем, в простейшем случае, сделайте горизонтальный разрез, который даст вам интенсивность в зависимости от положения пикселя.
import scipy.misc as misc
import matplotlib.pyplot as plt
img = misc.imread('spectrum.png', mode='L')
mid_line = img[len(img)//2]
plt.plot(mid_line)
plt.show()
Там есть некоторая фоновая яркость. Выполнение вертикального усреднения дало бы более гладкие спектры (img_mean = img.mean(axis=0)
).
Затем вам нужно найти способ «откалибровать» положение пикселей по длине волны. Для этого вам нужен внешний источник «правды», который, я не знаю, у вас есть. Например, можно сказать, что максимум на зеленой линии составляет 510 нм (пиксель 405), а на ярко-синей — 460 нм (пиксель 302). Затем, в зависимости от вашей экспериментальной установки, вы можете сказать, что расстояние в пикселях линейно с длиной волны, и тогда у вас есть преобразование.
Надеюсь, это поможет вам немного.
person
Ignacio Vergara Kausel
schedule
24.10.2017