Извините, что мне нужно продолжать возвращаться к задаче, неравномерно распределенной по данным. Кажется, я не вижу четких ответов на вопросы о том, как собирать данные в обычную сетку, а документация по программному обеспечению для меня хороша для тех, кто уже знает. У меня есть x, y, z данные на 29 баллов, с заголовком «Lon Lat Z». для построения контуров с этими данными здесь является то, что я делаю:использование matlab meshgrid
После считывания данных, сделать 300 на 300 точек регулярной сетки, на которую в интерполировать
numcols, numrows = 300, 300 xi = np.linspace(data.Lon.min(), data.Lon.max(), numcols) yi = np.linspace(data.Lat.min(), data.Lat.max(), numcols) xi, yi = np.meshgrid(xi, yi)
Печать XI и печати уг в эта точка дает мне x и y по моим данным, интерполируется более 300x300 точек.
Интерполируйте данные по сетке, созданной выше
x, y, z = data.Lon.values, data.Lat.values, data.Z.values zi = griddata(x, y, z, xi, yi)
На данный момент, если я
print zi
я получаю[[- - - ..., - - - -]
[- - - ..., - - -]
[- - - ..., - - -]
...,
[- - - ..., - - -]
[- - - ..., - - -]
[- - - ..., - - -]]
Я ожидал увидеть значения интерполированного z. У меня также есть объект карты, который должен быть наложен контурами. Функция построения рисунков дает мне отдельные цифры, для базовой карты и для контуров, с правильными значениями контура. Мой вопрос: почему я получаю пустые значения для контуров и как они выглядят правильно? Для полноты здесь моя функция зарисовки
fig=plt.figure(figsize=(8,4.5))
im = plt.contourf(xi, yi, zi)
plt.show()
Два участка придумали (базовая карта и контуры бок о бок)
Любая помощь, пожалуйста.
Очевидная опечатка: в xi и yi, вы используете numcols, не должно быть numrows и numcols? Другое дело: можете ли вы отступывать свое сообщение лучше? так как в определенный момент вы говорите «1.» но не приходит "2." ? – usethedeathstar
Спасибо @usethedeathstar за то, что вы указали ошибку опечатки. 1. читает в данных и создает сетку и 2. есть, что интерполирует –