Как установить диапазон оси изображения с помощью mataplotlib.imsave - PullRequest
0 голосов
/ 24 января 2019

Я сгенерировал RGB-изображение в формате pandas.DataFrame. Изображение может быть хорошо показано с помощью matplotlib.pyplot.imshow (). Теперь я хочу сохранить образ на локальный диск.

Я просмотрел документы matplotlib и обнаружил, что ply.imsave () может это сделать. Но imsave () не имеет параметра, который мог бы установить диапазон оси.

Я пробовал plt.axis (), но он не работает. Любые советы здесь, пожалуйста?

Код ниже:

def _load_img(self, df):
    imgUnpadded = np.zeros((3, self.img_x_max, self.img_y_max))
    imgUnpadded[0,:,:],xedges,yedges = np.histogram2d(df['img_x'],
                                       df['img_y'],
                                       bins = [self.img_x_max, self.img_y_max])
    imgUnpadded[1,:,:],xedges,yedges = np.histogram2d(df['img_x'],
                                       df['img_y'],
                                       bins = [self.img_x_max, self.img_y_max],
                                       weights = df['u'])
    imgUnpadded[2,:,:],xedges,yedges = np.histogram2d(df['img_x'],
                                       df['img_y'],
                                       bins = [self.img_x_max, self.img_y_max],
                                       weights = df['v'])
    return imgUnpadded

def _img_normlization(self, imgUnpadded, ymax, xmax):
    if 'pad' in self.img_params:
        pad = self.img_params['pad']
    else:
        pad = 50
    img0 = np.pad(imgUnpadded[0,:,:],pad,'constant',constant_values = 0)
    img = np.zeros((3, xmax+2*pad, ymax+2*pad))
    for ic in range(1,3):
        img[ic,:,:] = np.pad(imgUnpadded[ic,:,:],pad,'constant',constant_values = 0)
        img[ic,:,:] = np.nan_to_num(img[ic,:,:]/img0)
        img[ic,:,:] -= img[ic,:,:].min()
        img[ic,:,:] /= img[ic,:,:].max()
    img0 = np.nan_to_num(img0/img0)
    img[0,:,:] = img0
    img = np.transpose(img,(1,2,0))
    return img

def _save_img(self, img, i, day, actual_dep_time):
    if 'start_index' in self.img_params:
        output_fn = '%06d' % (i+self.img_params['start_index']) + '_' + day + '_' + actual_dep_time + '.png'
    else:
        output_fn = '%06d' % (i+1) + '_' + day + '_' + actual_dep_time + '.png'
    output_fp = os.path.join(self.save_base_fp, output_fn)
    plt.axis([0, self.img_x_max, 0, self.img_y_max])
    plt.imsave(output_fp, np.transpose(img,(1,0,2)), origin='lower')

3 функции будут запускаться одна за другой. Ввод _load_img () - это np.DataFrame, который имеет 4 столбца ['imgx', 'img_y', 'u', 'v']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...