У меня есть Z-матрица, и когда я подключаю ее к pcolorme sh, она отлично работает и дает мне следующий график. Единственная проблема заключается в том, что на осях теперь отображаются индексы матрицы. Код, который я использовал для его создания, приведен ниже:
#boo - most of the parameters like title,xyz labels, filename comes from command line
data = np.loadtxt((args.data),dtype=float, comments="#")
cmap = plt.get_cmap('bwr')
fig, ax0 = plt.subplots()
divnorm = colors.DivergingNorm(vmin=np.amin(data), vcenter=0, vmax=np.amax(data))
im0 = ax0.pcolormesh(data,norm=divnorm, cmap=cmap)
fig.colorbar(im0,ax=ax0)
ax0.set_title(str(title))
plt.xlabel(str(xlabel))
plt.ylabel(str(ylabel))
filename = str(prefix) + "."+ str(fileformat)
plt.savefig(filename)
Я хотел изменить масштаб оси X с коэффициентом 0,1 (в итоге я сделал это вручную, так как я не нашел обходного пути) и изменил ось y относительно другого массива (обратите внимание: вместо этого я не манипулирую Z-матрицей, я использую физически значимый экспериментальный массив значений - здесь, sortData - соответствует индексам матрицы ). Я изменил свой код следующим образом - ось x и yaxis кажутся в порядке, но моя тепловая карта выглядит иначе. Может кто-то пролить свет на это? Большое спасибо
#foo
Data = np.loadtxt((args.data),dtype=float, comments="#")
sort = np.loadtxt((args.sortData),dtype=float, comments="#")
fig, ax0 = plt.subplots()
cmap = plt.get_cmap('bwr')
divnorm = colors.DivergingNorm(vmin=np.amin(Data), vcenter=0, vmax=np.amax(Data))
# im0 = ax0.pcolormesh(Data,norm=divnorm, cmap=cmap)
# ax0.set_xscale(1, "linear")
x = np.arange(0.0,10.6,0.1) # need to set the ticks manually
y = sort[:,1]
X,Y = np.meshgrid(x,y)
Z=z.reshape(len(y),len(x))
im0 = ax0.pcolormesh(X,Y,Data,norm=divnorm, cmap=cmap)#, extent=[x.min(), x.max(), y.min(), y.max()])
#im0 = ax0.pcolormesh(x,y,Data,norm=divnorm, cmap=cmap)#, extent=[x.min(), x.max(), y.min(), y.max()])
cbar = fig.colorbar(im0,ax=ax0)
if args.zlabel !=None:
cbar.ax.set_ylabel(str(args.zlabel))
ax0.set_title(str(args.title))
plt.xlabel(str(args.xlabel))
plt.ylabel(str(args.ylabel))
filename = str(args.prefix) + "."+ str(args.fileformat)
plt.savefig(filename)
РЕДАКТИРОВАТЬ 1: Когда я строю бу, ось y равномерно разнесена, так как мы имеем дело с матричными индексами. Когда я строю foo, это не так, поскольку значения массива, соответствующие этим индексам (не матрица данных, а внешний массив y, который имеет ту же тусклость, что и данные, но имеет значения, сохраненные в нем, соответствующие expt), не равно разнесены. Проблема в том, что значения y, соответствующие первым 5 индексам y матрицы данных, равны 1.32, 3.200, 3.311, 3.38, 3.40, и их значения x изменяются во всем диапазоне [от xmin до xmax]. Но между 0 и 5 (Y) есть гигантская капля красного цвета, которая идет горизонтально до конца xlim. Очевидно, что-то не так, но не могу понять, что это такое.