У меня возникли проблемы с использованием Pyplot imshow
для построения изображения из numpy ndarray
под названием data
, сохраняя как соотношение сторон, так и пиксели квадратной формы. Форма ndarray
- (112, 2182)
. Вот код, который я использую:
import matplotlib as mpl
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
mpl.use('Agg')
import matplotlib.pyplot as plt
data = np.random.random_sample((112, 2182))
plt.figure(figsize=(25, 3.5))
plt.subplots_adjust(left=0.1, right=0.9)
ax = plt.subplot(111)
plt.axis('off')
plt.title('Title', fontweight='bold', y=1.15)
im = ax.imshow(data)
# Add same-width colorbar to the bottom of the image
divider = make_axes_locatable(ax)
cax = divider.append_axes("bottom", size="25%", pad=0.3)
cbar = plt.colorbar(im, orientation="horizontal", cax=cax)
# Save image
plt.savefig('image.pdf', dpi=1000, format=pdf)
Я думал, что, установив соотношение сторон с помощью формы ndarray
, изображение будет показывать квадратные пиксели. Однако изображение, кажется, сохраняет соотношение сторон, но пиксели не являются квадратами, как вы можете видеть на увеличенном изображении (я все еще не могу публиковать изображения, извините):
Эти результаты такие же, как у меня, когда я использовал im = ax.imshow(data)
без аргумента aspect
. Я вручную посчитал пиксели по оси Y всего графика, и их 112, так что дело не в группировке пикселей. Любые идеи о том, как решить эту проблему?
РЕДАКТИРОВАТЬ: изображение, которое я рисую, также будет иметь цветную полосу и заголовок. Кроме того, мне нужно иметь возможность сохранить его в файл PDF. Увеличенный график, который я загрузил, представляет собой снимок экрана, увеличенный в программе просмотра PDF.