!У меня есть значения в виде (x,y,z). Создав график list_plot3d, я ясно вижу, что они не совсем равномерно расположены. Обычно они образуют маленькие «капли» от 3 до 5 точек на плоскости xy. Итак, чтобы интерполяция и окончательный «контурный» график были лучше, или, я должен сказать, более гладким (?), мне нужно создать прямоугольную сетку (например, квадраты на шахматной доске), чтобы капли данных каким-то образом " сглаженный"? Я понимаю, что это может быть тривиально для некоторых людей, но я пробую это впервые и немного борюсь. Я смотрел на пакеты scipy, такие как scipy.interplate.interp2d, но графики, полученные в конце, действительно плохие. Может быть, краткое руководство по 2D-интерполяции в sagemath для таких любителей, как я? Какой-то совет? Спасибо.
ИЗМЕНИТЬ:
https://docs.google.com/file/d/0Bxv8ab9PeMQVUFhBYWlldU9ib0E/edit?pli=1
В основном это такие графики, которые он создает вместе с этим сообщением:
Warning: No more knots can be added because the number of B-spline
coefficients
already exceeds the number of data points m. Probably causes:
either
s or m too small. (fp>s)
kx,ky=3,3 nx,ny=17,20 m=200 fp=4696.972223 s=0.000000
Чтобы получить этот график, я просто запускаю эту команду:
f_interpolation = scipy.interpolate.interp2d(*zip(*matrix(C)),kind='cubic')
plot_interpolation = contour_plot(lambda x,y:
f_interpolation(x,y)[0], (22.419,22.439),(37.06,37.08) ,cmap='jet', contours=numpy.arange(0,1400,100), colorbar=True)
plot_all = plot_interpolation
plot_all.show(axes_labels=["m", "m"])
Где матрица (с) может быть огромной матрицей, например, 10000 х 3 или даже намного больше, например 1000000 х 3. Проблема плохих графиков сохраняется даже при меньшем количестве данных, таких как изображение, которое я прикрепил сейчас, где матрица (С) была только 200 х 3 , Вот почему я начинаю думать, что, кроме возможного сбоя в программе, мой подход к использованию этой команды может быть совершенно неправильным, поэтому я прошу совета по поводу использования сетки, а не просто " бросая" мои данные в команду.