2016-07-20 2 views
0

Итак, я сделал несколько точек данных, и я их построил. Затем я хотел интерполировать и построить свою кубическую функцию. Однако, когда я построил график, появилось только 3 функции. Как это сделать, чтобы все функции отображались? Кроме того, когда я построил интерполированную линейную функцию, все линии проявились красиво.Cubic Interpolation не показывает, но линейный делает?

xnew = np.linspace(0.0414, 1.0414, 10000) 

z, mass1, mass2, mass3, mass4, mass5, mass6, mass7 = np.loadtxt("BHMF_bluemassfinal.dat", usecols = [0,1,2,3,4,5,6,7], unpack = True) 
axes[0].plot(z, mass1,'bo') 
axes[0].plot(z, mass2, 'bo') 
axes[0].plot(z, mass3, 'bo') 
axes[0].plot(z, mass4, 'bo') 
axes[0].plot(z, mass5, 'bo') 
axes[0].plot(z, mass6, 'bo') 
axes[0].plot(z, mass7, 'bo') 
axes[0].plot(xnew, fb1(xnew), 'k') 
axes[0].plot(xnew, fb2(xnew), 'k') 
axes[0].plot(xnew, fb3(xnew), 'k') 
axes[0].plot(xnew, fb4(xnew), 'k') 
axes[0].plot(xnew, fb5(xnew), 'k') 
axes[0].plot(xnew, fb6(xnew), 'k') 
axes[0].plot(xnew, fb7(xnew), 'k') 

z, mass1, mass2, mass3, mass4, mass5, mass6, mass7 = np.loadtxt("BHMF_greenmassfinal.dat", usecols = [0,1,2,3,4,5,6,7], unpack = True) 
axes[1].plot(z, mass1, 'go') 
axes[1].plot(z, mass2, 'go') 
axes[1].plot(z, mass3, 'go') 
axes[1].plot(z, mass4, 'go') 
axes[1].plot(z, mass5, 'go') 
axes[1].plot(z, mass6, 'go') 
axes[1].plot(z, mass7, 'go') 
axes[1].plot(xnew, fg1(xnew), 'k') 
axes[1].plot(xnew, fg2(xnew), 'k') 
axes[1].plot(xnew, fg3(xnew), 'k') 
axes[1].plot(xnew, fg4(xnew), 'k') 
axes[1].plot(xnew, fg5(xnew), 'k') 
axes[1].plot(xnew, fg6(xnew), 'k') 
axes[1].plot(xnew, fg7(xnew), 'k') 

enter image description here

+0

Из файла, из которого я рисую, есть несколько данных NaN. Возможно, это останавливает интерполяцию? –

+0

Возможно. Кажется, это звездные массы, но вы их замышляете как функцию красного смещения. Для чего это? – Anonymous

+0

Хороший глаз. Я планирую, как с течением времени развиваются массы сверхмассивных черных дыр. –

ответ

1

В конце концов, я понял, что некоторые точки данных были math.nan. Они не допускали интерполяции.

Я должен был взять свой основной файл и разрезать его в разные отдельные файлы, где корзина с красным смещением соответствовала бы моему мусорному веществу. Следовательно, я забрал математику. Я мог бы сделать интерполяцию.

Мое решение довольно немое. Если кто-то может предложить более эффективное решение, не стесняйтесь публиковать его в любом случае.

+0

Что вы подразумеваете под вашим красным диском «совпадение» с вашим мусором? Недавно у меня была аналогичная проблема, пытаясь рассчитать скоростные дисперсии скоплений галактик, учитывая некоторые данные о спектре галактик. Около 3 из 60 кластеров закончились дисперсиями NaN, и я также решил это путем биннинга. Хотя кажется, что излишнее разделить ваши данные вручную на отдельные файлы. Я просто приколол красные смещения, используя 'numpy.histogram' – Anonymous

+0

Я имел в виду« соответствие »в том, что для каждого красного смещения будет соответствующая масса. Для красных смещений, которые имели массу NaN, я вырезал их. Я в значительной степени просто разделил свой первоначальный список и интерполировал сокращения. –

+0

numpy.histogram кажется действительно интересным ... Я немного запутался в синтаксисе для него, хотя. Как использовать numpy.histogram для сокращения моих списков? –

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