Я бы хотел создать contourf
график из матрицы 24x20 из кадра данных, как показано ниже:
Фрагмент моего кода:
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
: здесь
Ожидаемый результат будет выглядеть так: