Добавление текста в PDF с помощью matplotlib - PullRequest
1 голос
/ 13 июля 2020

введите описание изображения здесь Мне нужно добавить фрейм данных pandas в pdf, а также написать некоторую информацию об этом в pdf. Я успешно завершил запись кадра данных pandas в pdf.

Ниже мой код:

fig,ax=plt.subplots(figsize=(20,10))
ax.axis('tight')
ax.axis('off')
the_table=ax.table(cellText=df.values,colLabels=df.columns,loc='center')

pp=PdfPages("foo.pdf")
pp.savefig(fig,bboc_inches='tight')
pp.close()

На выходном PDF-файле напечатан кадр данных.

Что мне делать, чтобы добавить дополнительную информацию о нем, который не является фреймом данных? (Eg:I want to add Headings,Informations on it which are sentences)

Я хочу преобразовать в pdf с помощью matplotlib / Fpdf. Используя Fpdf, я могу добавлять предложения, но не таблицу. Итак, я использовал matplotlib.

Пожалуйста, дайте мне идею, как это сделать. Большое спасибо!

1 Ответ

2 голосов
/ 13 июля 2020

Вы можете разместить любой текст, используя plt.text, где параметры x и y являются фактическими координатами на графике. Чтобы правильно разместить текст, сначала включите оси, а затем разместите текст (ы), наконец, выключите оси, используя plt.axis('off'). Ниже я прикрепил образец кода.

import numpy as np
import matplotlib.pyplot as plt

plt.axis('off')

data = [[ 66386, 174296,  75131, 577908,  32015],
        [ 58230, 381139,  78045,  99308, 160454],
        [ 89135,  80552, 152558, 497981, 603535],
        [ 78415,  81858, 150656, 193263,  69638],
        [139361, 331509, 343164, 781380,  52269]]

columns = ('Freeze', 'Wind', 'Flood', 'Quake', 'Hail')
rows = ['%d year' % x for x in (100, 50, 20, 10, 5)]

values = np.arange(0, 2500, 500)
value_increment = 1000

n_rows = len(data)

index = np.arange(len(columns)) + 0.3
bar_width = 0.4

y_offset = np.zeros(len(columns))

cell_text = []
for row in range(n_rows):
    y_offset = y_offset + data[row]
    cell_text.append(['%1.1f' % (x / 1000.0) for x in y_offset])

plt.text(x=0.5, y=0.8, s="Text 1 here")
plt.text(x=0.2, y=0.9, s="Text 2 here")
# Add a table at the bottom of the axes
the_table = plt.table(cellText=cell_text,
                      rowLabels=rows,
                      colLabels=columns,
                      loc='center')


plt.show()

введите описание изображения здесь

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