Я беру пример с здесь , чтобы объяснить, что я хочу сделать:
import numpy as np
from matplotlib.mlab import griddata
import matplotlib.pyplot as plt
xs0 = [1,4,0.5,2,5,10,33,0.04]
ys0 = [2,5,44,0.33,2,14,20,0.03]
zs0 = [0.77, 0.88, 0.65, 0.55, 0.89, 0.9, 0.8,0.95]
N = 30j
extent = (np.min(xs0),np.max(xs0),np.min(ys0),np.max(ys0))
xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]
resampled = griddata(xs0, ys0, zs0, xs, ys, interp='linear')
plt.imshow(np.fliplr(resampled).T, extent=extent,interpolation='none')
plt.colorbar()
введите описание изображения здесь
Но тамЕсть много проблем, которые я не могу решить:
- Невозможно изменить длину x абсцессов относительно y единицы.Это большая проблема, когда у вас есть порядки между данными x и y.
Если бы я имел color= 'bwr'
в функции imshow, это не работает!Я не понимаю почему.
Самый важный момент: как мы можем исправить одну корзину для абсцесса x, а другую - для y?В моем измерении я брал 800 баллов за каждый цикл (абсцесс), но только для 50 различных значений х.Это проблема.Я хотел бы иметь возможность выбирать их независимо, без какой-либо интерполяции между двумя различными значениями х.Я могу изменить xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:N]
на xs,ys = np.mgrid[extent[0]:extent[1]:N, extent[2]:extent[3]:M]
и создать N = 30j
и M = 300j
, но это не удобно ...
И последний вопрос: что это такое N = 30j
?Почему бы просто не N = 30
?!
Большое спасибо за вашу помощь!Как видите, я немного растерялся ... (конечно, я не чувствую себя обязанным использовать этот код ... У меня просто есть данные X, Y, Z, которые я хочу построить)