Визуализируйте массив 3x3 и сохраните его как новый массив формы: 400x600 - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть массив вроде:

import numpy as np
np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

, и я хочу визуализировать каким-то приятным способом, например:

enter image description here

но с разрешением: 400 x 600.

Итак, в конце я хочу получить новый массив фигур (400, 600), который при построении с использованием:

import matplotlib.pyplot as plt
plt.imshow(my_new_array)

покажет изображение как выше.

Возможно ли это?Есть ли какой-нибудь пакет, который мне поможет?

[edit:] После комментария @Mad Physicist я исследовал латекс, и следующий код мог бы работать:

\documentclass{article}
\usepackage{amsmath}
\begin{document}    
\[    
  \begin{bmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9

  \end{bmatrix}
\]

\end{document}

и matplotlib имеет возможность использовать текст по оси и заголовку, но я не знаю, как использовать его в основной части графика.Может быть, пустой график и использовать заголовок в середине?

[edit2]: Второй ответ здесь наиболее близок к тому, что мне нужно: Преобразование латексного кода в изображения (или другой отображаемый формат) с помощью Python Однако, как указано в моем комментарии ниже, я сталкиваюсь с ошибкой в ​​kaggle с разными методами, использующими matplotlib и latex:

FileNotFoundError: [Errno 2] No such file or directory: 'latex': 'latex'

Ответы [ 2 ]

0 голосов
/ 11 февраля 2019

Похоже, что используемое вами ядро ​​Kaggle не может получить доступ к интерпретатору LaTex.

Если вы просто хотите создать несколько изображений для презентации, вы можете проверить Latex 2 png .Здесь вы должны ввести

\begin{bmatrix}
    1 & 2 & 3 \\
    4 & 5 & 6 \\
    7 & 8 & 9

  \end{bmatrix}

, что приведет к следующему изображению:

Image created with latex2png.com

0 голосов
/ 08 февраля 2019

Matplotlib может визуализировать текст с помощью LaTeX , так что вы можете воспользоваться этим для визуализации такого рода:

import numpy as np
import matplotlib.pyplot as plt

def show_mat(a, font_size, resolution=None, dpi=None):
    resolution = resolution or (600, 400)
    dpi = dpi or 100
    res_x, res_y = resolution
    inc_x = res_x / dpi
    inc_y = res_y / dpi
    rows, cols = a.shape
    fig = plt.figure(figsize=(inc_x, inc_y), dpi=dpi)
    ax = fig.add_subplot(111)
    ax.set_axis_off()
    a_str = r' \\ '.join(' & \quad & '.join(map(str, row)) for row in a)
    alig = 'c' * (2 * cols - 1)
    tex = r"$\left[\begin{{array}}{{{}}}{}\end{{array}}\right]$".format(alig, a_str)
    ax.text(0.5, 0.5, tex, size=font_size,
            horizontalalignment='center', verticalalignment='center',
            transform=ax.transAxes)

show_mat(np.arange(1, 10).reshape(3, 3), font_size=50)

Вывод:

Matrix

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