如何将 pandas 数据框从 PdfPages 保存到现有的 pdf 中
How to save pandas dataframe into existing pdf from PdfPages
我创建了一个 pdf 文件,其中保存了几个使用 Matplotlib 创建的绘图。
我执行了以下操作来创建 pdf
from matplotlib.backends.backend_pdf import PdfPages
report = PdfPages('report.pdf')
创建情节后,我每次都会这样做 report.savefig()
。但是,我还想将生成的数据帧输出到 Pdf 中。本质上,我希望一份报告在一个地方包含图表和查询数据框。是否可以使用 PdfPages 创建的数据框向 Pdf 添加数据框,如果可以,我该怎么做?如果没有,是否有另一种方法可以让绘图和数据框位于一次位置(无需保存单个组件并将它们拼凑在一起)?会喜欢任何建议和例子。谢谢!
只需创建 table 的绘图,然后保存。给定一个数据框,例如:
import pandas as pd
df = pd.DataFrame()
df['Animal'] = ['Cow', 'Bear']
df['Weight'] = [250, 450]
df['Favorite'] = ['Grass', 'Honey']
df['Least Favorite'] = ['Meat', 'Leaves']
看起来像:
Animal Weight Favorite Least Favorite
0 Cow 250 Grass Meat
1 Bear 450 Honey Leaves
你可以像这样绘制一个 table 版本:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(9,2))
ax = plt.subplot(111)
ax.axis('off')
ax.table(cellText=df.values, colLabels=df.columns, bbox=[0,0,1,1])
输出:
您可以通过向单元格添加一些背景颜色来使 table 图的样式更漂亮:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(9,2))
ax=plt.subplot(111)
ax.axis('off')
c = df.shape[1]
ax.table(cellText=np.vstack([df.columns, df.values]), cellColours=[['lightgray']*c] + [['none']*c]*2, bbox=[0,0,1,1])
输出:
查看此 (所有这些示例均取自该示例)了解更多 ideas/variants。
编辑
我突然想到您可能想在同一个图形上绘制图像和 tables。您可以这样做以获得如下结果:
这是一张 link to the tutorial 该图片的来源,其中有一些示例代码可以帮助您入门。
我创建了一个 pdf 文件,其中保存了几个使用 Matplotlib 创建的绘图。
我执行了以下操作来创建 pdf
from matplotlib.backends.backend_pdf import PdfPages
report = PdfPages('report.pdf')
创建情节后,我每次都会这样做 report.savefig()
。但是,我还想将生成的数据帧输出到 Pdf 中。本质上,我希望一份报告在一个地方包含图表和查询数据框。是否可以使用 PdfPages 创建的数据框向 Pdf 添加数据框,如果可以,我该怎么做?如果没有,是否有另一种方法可以让绘图和数据框位于一次位置(无需保存单个组件并将它们拼凑在一起)?会喜欢任何建议和例子。谢谢!
只需创建 table 的绘图,然后保存。给定一个数据框,例如:
import pandas as pd
df = pd.DataFrame()
df['Animal'] = ['Cow', 'Bear']
df['Weight'] = [250, 450]
df['Favorite'] = ['Grass', 'Honey']
df['Least Favorite'] = ['Meat', 'Leaves']
看起来像:
Animal Weight Favorite Least Favorite
0 Cow 250 Grass Meat
1 Bear 450 Honey Leaves
你可以像这样绘制一个 table 版本:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(9,2))
ax = plt.subplot(111)
ax.axis('off')
ax.table(cellText=df.values, colLabels=df.columns, bbox=[0,0,1,1])
输出:
您可以通过向单元格添加一些背景颜色来使 table 图的样式更漂亮:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(9,2))
ax=plt.subplot(111)
ax.axis('off')
c = df.shape[1]
ax.table(cellText=np.vstack([df.columns, df.values]), cellColours=[['lightgray']*c] + [['none']*c]*2, bbox=[0,0,1,1])
输出:
查看此
编辑
我突然想到您可能想在同一个图形上绘制图像和 tables。您可以这样做以获得如下结果:
这是一张 link to the tutorial 该图片的来源,其中有一些示例代码可以帮助您入门。