Как можно отобразить контур из матрицы без инверсии и рисовать линии? - PullRequest
0 голосов
/ 31 января 2019

Я бы хотел создать contourf график из матрицы 24x20 из кадра данных, как показано ниже:

img

Фрагмент моего кода:

fig, ax = plt.subplots(nrows=1, ncols=3 , figsize=(20,10))
plt.subplot(131)
xlist = np.linspace(0, 20, 20)
ylist = np.linspace(0, 24, 24)
X, Y = np.meshgrid(xlist, ylist)
plt.contourf(X, Y, df3, cmap="coolwarm" )
plt.gca().invert_yaxis()
plt.axis('off')

Проблема 1 Я не уверен, почему график 'A' напечатан обратно , и я должен использовать plt.gca().invert_yaxis() на основе этот ответ для того, чтобыинвертировать это.Я заметил, что В 7 упоминается: plt.imshow() по умолчанию следует стандартному определению массива изображений, где начало координат находится слева вверху, не слева внизу, как на большинстве контурных графиков ,Это является причиной этого, или я делаю что-то не так?

Проблема 2 Я хотел бы разделить матрицу на 8 маленьких, нарисовав 4 белые линии, но это было невозможно с помощью ax.axvline(x=10, color='w',linewidth=1.5).На основе В 7 кажется, что plt.imshow() также не принимает сетку x и y, поэтому он должен вручную указать экстент [xmin, xmax, ymin, ymax] изображения на графике.Есть какие-нибудь идеи для этого?

Задача3 В чем выгода Интерполяция с использованием scipy.interpolate.griddata или Контур без сетки с использованием tricontour() или этот подход в этом ответе в моем случае?

Задача4 , когда interpolation='nearest' полезен?Я заметил здесь он используется для поиска контура

Примечание Матрица с 480 значениями доступна в файле .csv: здесь

Ожидаемый результат будет выглядеть так: img

...