Я пытаюсь обобщить устаревший код и должен был создать функцию для построения графиков.Приведенный ниже код является самой простой формой, которую я мог придумать, чтобы представить ее, также поддерживая реплицируемость.
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import matplotlib.colors as colors
import matplotlib.pyplot as plt
def graphs(arr, sub, fig):
cm=plt.cm.jet
cm.set_under('white')
image=sub.imshow(arr,origin='low',cmap=cm,norm=colors.SymLogNorm(linthresh=10))
sub.axis([-100,100,-100,100])
divider = make_axes_locatable(sub)
fig.colorbar(image, cax=divider.append_axes("right", size="5%", pad=0.05))
T=np.random.rand(204,204)*np.nan
T[:T.size//2:2] = 2
fig1, (a1,a2,a3,a4) = plt.subplots(ncols=4,figsize=(15,15))
im1=graphs(T,a1,fig1)
im2=graphs(T,a2,fig1)
im3=graphs(T,a3,fig1)
im4=graphs(T,a4,fig1)
T.npy
- это файл , содержащий массив numpy
снекоторые цифры, но в основном NaN
с.Когда я удаляю аргумент norm
, код работает (но не правильно, так как мне нужны также и отрицательные значения).Итак, я понял, что SymLogNorm
является виновником.Я получаю ошибку:
ValueError: Both *x_transform* and *y_transform* must be 2D affine transforms
Я не могу заставить ее работать.Мои поиски «аффинных преобразований» не были плодотворными.Любая помощь очень ценится.
PS Я старался изо всех сил, чтобы сделать ее воспроизводимой.Однако, если чего-то не хватает, пожалуйста, дайте мне знать, чтобы я мог отредактировать сообщение.
РЕДАКТИРОВАТЬ: я заменил файл T.npy
на массив для простоты репликации.Ошибка та же.