Document Tabular DataΒΆ

Multiple ways of inserting tables into your document.

from pylatex import NoEscape, NewLine
from latexdocs import Document
import numpy as np

doc = Document()

# The height of each row is set to 1.5 relative to its default height.
doc.append(NoEscape(r'\renewcommand{\arraystretch}{1.5}'))

# The space between the text and the left/right border of its
# containing cell is set to 18pt with this command. Again,
# you may use other units if needed.
doc.append(NoEscape(r'\setlength{\tabcolsep}{18pt}'))

Tables using pylatex

from pylatex import Tabular, Tabularx

table = Tabular('rc|cl')
table.add_hline()
table.add_row((1, 2, 3, 4))
table.add_hline(1, 2)
table.add_empty_row()
table.add_row((4, 5, 6, 7))
doc.append(table)
doc.append(NewLine())

table = Tabularx('X|X|X|X')
table.add_hline()
table.add_row((1, 2, 3, 4))
table.add_hline(1, 2)
table.add_empty_row()
table.add_row((4, 5, 6, 7))
doc.append(table)
doc.append(NewLine())

Tables using texttable and latextable

from texttable import Texttable
import latextable

table_1 = Texttable()
table_1.set_cols_align(["l", "r", "c"])
table_1.set_cols_valign(["t", "m", "b"])
table_1.add_rows([["Name", "Age", "Nickname"],
                 ["Mr\nXavier\nHuon", 32, "Xav'"],
                 ["Mr\nBaptiste\nClement", 1, "Baby"],
                 ["Mme\nLouise\nBourgeau", 28, "Lou\n \nLoue"]])
print('-- Example 1: Basic --')
print('Texttable Output:')
print(table_1.draw())
print('\nLatextable Output:')
content = latextable.draw_latex(table_1, caption="An example table.",
                                label="table:example_table")
print(content)
doc.append(NoEscape(content))
-- Example 1: Basic --
Texttable Output:
+----------+-----+----------+
|   Name   | Age | Nickname |
+==========+=====+==========+
| Mr       |     |          |
| Xavier   |  32 |          |
| Huon     |     |   Xav'   |
+----------+-----+----------+
| Mr       |     |          |
| Baptiste |   1 |          |
| Clement  |     |   Baby   |
+----------+-----+----------+
| Mme      |     |   Lou    |
| Louise   |  28 |          |
| Bourgeau |     |   Loue   |
+----------+-----+----------+

Latextable Output:
\begin{table}
        \begin{center}
                \begin{tabular}{|l|r|c|}
                        \hline
                        Name & Age & Nickname \\
                        \hline
                        MrXavierHuon & 32 & Xav' \\
                        \hline
                        MrBaptisteClement & 1 & Baby \\
                        \hline
                        MmeLouiseBourgeau & 28 & Lou Loue \\
                        \hline
                \end{tabular}
        \end{center}
        \caption{An example table.}
        \label{table:example_table}
\end{table}

Tables using latexdocs

from latexdocs import Table, TableX

labels = ['A', 'B', 'C', 'D']
data = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
doc.append(Table(data=data, columns=labels, table_spec=r"c|c|c|c"))

table = Table('c c c c', 'h!', caption="This is a table.",
              label="table:tbl1")
table.add_hline()
table.add_row(('Case', "Method 1", "Method 2", "Method 3"))
table.add_hline()
table.add_hline()
table.add_row((1, 50, 837, 970))
table.add_row((2, 51, 838, 971))
table.add_row((3, 52, 839, 972))
table.add_row((4, 53, 840, 973))
table.add_hline()
doc.append(table)

labels = ['A', 'B', 'C', 'D']
data = np.array([[1, 2, 3, 4], [5, 6, 7, 8]])
nD = data.shape[-1]
table_spec = r"|".join(nD * [r">{\centering\arraybackslash}X",])
doc.append(TableX(table_spec, 'h!', data=data, columns=labels))

Build the document

doc.build().generate_pdf('tables', compiler='pdflatex')

Show the result using pypdfium2 and matplotlib

import pypdfium2 as pdfium
import matplotlib.pyplot as plt

pdf = pdfium.PdfDocument("tables.pdf")
page = pdf.get_page(0)
pil_image = page.render_topil()
plt.imshow(pil_image)
plot 3 tables
<matplotlib.image.AxesImage object at 0x7fcb06463e50>

Total running time of the script: ( 0 minutes 0.926 seconds)

Gallery generated by Sphinx-Gallery