У меня проблема с масштабированием моей графики. Я использую imshow для построения двух матриц, первая из которых представляет собой матрицу 2x2, а вторая - матрицу 5x5. Теперь я хочу, чтобы оба имели одинаковый размер полей, представляющих записи матриц. Но я хочу, чтобы они были одинаковыми по абсолютному размеру (например, пикселям). Если я нарисую оба и четко сравню их, поля матрицы 2x2 будут намного больше по сравнению с числами внутри, чем матрица 5x5. матрица 2x2, слишком большие поля Матрица 5x5, размер правой рамки Я попытался использовать параметр "figsize" функции plt.figure(), но это также изменяет масштаб чисел в коробки. Еще одна вещь, которую я пробовал, - это параметр «степень» imshow, который не работал, если я пытался просто уменьшить размеры полей. Он просто масштабировал их обратно. (это работает, хотя, если я делаю ограничивающую рамку шире, она автоматически делает их тоньше, но это не то, что я хочу, пример ниже). с использованием экстента: шире и тоньше, но мне это не интересно
Теперь снова: я как бы хочу изменить размер полей, но не меняю размер текста/цифр, чтобы он не выглядел свалкой, если я поставлю графику рядом друг с другом в статье. Это не обязательно должен быть способ автоматического сопоставления размеров блоков двух фигур, я уже доволен любым способом изменения размеров блоков, потому что он не должен быть точным на 100%. У кого-нибудь есть идея, как я могу это сделать? Спасибо большое уже!!
Вот код для двух графиков с квадратными прямоугольниками (то, что я хочу, но просто изменил размеры):
import matplotlib.pyplot as plt
import numpy as np
plt.style.use("seaborn-dark")
def gfx_1():
fig = plt.figure()
ax1 = plt.subplot(111)
data = [[1, 2], [3, 4]]
ax1.imshow(data, interpolation="nearest")
for (i, j), data in np.ndenumerate(data):
ax1.text(i, j, s=str(data), ha='center', va='center')
ax1.set_xticklabels([])
ax1.set_yticklabels([])
ax1.set_xticks(np.arange(-0.5, 1.5, 1.))
ax1.set_yticks(np.arange(-0.5, 1.5, 1.))
ax1.grid(linewidth=2)
plt.savefig("2x2.png")
def gfx_2():
fig = plt.figure()
ax1 = plt.subplot(111)
data = [[1, 2, 3, 4, 5], [3, 4, 5, 6, 7], [6, 7, 8, 9, 10], [9, 10, 11, 12, 13], [12, 13, 14, 15, 16]]
ax1.imshow(data, interpolation="nearest")
for (i, j), data in np.ndenumerate(data):
ax1.text(i, j, s=str(data), ha='center', va='center')
ax1.set_xticklabels([])
ax1.set_yticklabels([])
ax1.set_xticks(np.arange(-0.5, 4.5, 1.))
ax1.set_yticks(np.arange(-0.5, 4.5, 1.))
ax1.grid(linewidth=2)
plt.savefig("5x5.png")
и модифицированный с расширением (чего я не знаю):
def gfx_1():
fig = plt.figure()
ax1 = plt.subplot(111)
data = [[1, 2], [3, 4]]
ax1.imshow(data, interpolation="nearest", extent=(-0.5, 3.5, -0.5, 1.5))
for (i, j), data in np.ndenumerate(data):
ax1.text(i*2, j, s=str(data), ha='center', va='center')
ax1.set_xticklabels([])
ax1.set_yticklabels([])
ax1.set_xticks(np.arange(-0.5, 3.5, 2.))
ax1.set_yticks(np.arange(-0.5, 1.5, 1.))
ax1.grid(linewidth=2)
plt.savefig("2x2_wide.png")