Vorrei usare LaTeX per generare le tabelle, poiché sembrano fantasiose e puoi generare un'immagine o inserirle direttamente nel tuo documento. Ho usato il seguente codice per raggiungere questo obiettivo:
#!/usr/bin/env
import numpy as np
import os
x = np.array([[1,2],[3,4]])
def generateLatexTable(x):
start = [r'\documentclass[preview]{standalone}', r'\begin{document}', r'\begin{tabular}{%s}' % ('{1}{0}{1}'.format('|'.join(['r'] * x.shape[1]), '|')), r'\hline']
tab = [' & '.join(['%d' % val for val in row]) + r' \\ \hline' for row in x]
end = [r'\end{tabular}', r'\end{document}']
text = '\n'.join(start + tab + end)
return text
with open('table.tex', 'w') as f:
f.write(generateLatexTable(x))
os.system("pdflatex table.tex")
Qui preview
viene utilizzata la classe del documento che restituisce un'immagine ridimensionata al contenuto del documento, ovvero solo la tabella. Solo un tabular
ambiente viene utilizzato per presentare i dati. Ci sono barre orizzontali e verticali tra le celle, ma è molto facile cambiarlo. Nella variabile tab
i dati vengono elaborati per ogni riga e convertiti in una stringa. Si noti che è necessario specificare il formato di output in questa posizione. L'ho impostato su %d
così tutto viene convertito in numeri interi.
Se si desidera utilizzare la tabella direttamente in una fonte in lattice, è necessario rimuovere documentclass
e \begin{document}
nonché \end{document}
le variabili di start
e end
. Infine, tutto viene messo insieme in una sorgente in lattice che viene quindi archiviata su disco come table.tex
. Se vuoi solo l'immagine alla fine, il file risultante viene compilato in table.pdf
.
Ecco come appare l'output. Ma come ho detto, è molto facile cambiare l'aspetto dato che è LaTeX :)
Ecco un altro esempio con una matrice grande (14 x 14), piena di numeri casuali che vanno da 0 a 100:
table
sarebbe un buon punto di partenza. Non l'ho usato abbastanza per dare una buona risposta.