Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将pandas dataframe从PdfPages保存到现有pdf中_Python_Pandas_Pdf_Matplotlib_Pdf Generation - Fatal编程技术网

Python 如何将pandas dataframe从PdfPages保存到现有pdf中

Python 如何将pandas dataframe从PdfPages保存到现有pdf中,python,pandas,pdf,matplotlib,pdf-generation,Python,Pandas,Pdf,Matplotlib,Pdf Generation,我创建了一个pdf,它保存了使用Matplotlib创建的几个绘图 我做了以下工作来创建pdf from matplotlib.backends.backend_pdf import PdfPages report = PdfPages('report.pdf') 创建绘图后,我每次都会执行此report.savefig()。但是,我还希望将生成的数据帧输出到Pdf中。本质上,我希望一个报表包含绘图和查询的数据帧,所有这些都在一个地方。是否可以使用使用PdfPages创建的数据帧向Pdf添加数

我创建了一个pdf,它保存了使用Matplotlib创建的几个绘图

我做了以下工作来创建pdf

from matplotlib.backends.backend_pdf import PdfPages
report = PdfPages('report.pdf')

创建绘图后,我每次都会执行此
report.savefig()
。但是,我还希望将生成的数据帧输出到Pdf中。本质上,我希望一个报表包含绘图和查询的数据帧,所有这些都在一个地方。是否可以使用使用PdfPages创建的数据帧向Pdf添加数据帧?如果可以,我将如何添加?如果没有,是否有另一种方法可以允许绘图和数据帧一次到位(无需保存单个组件并将它们拼接在一起)?我想听听你的建议和例子。谢谢

只需创建表格的绘图,然后保存即可。给定一个数据帧,例如:

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
可以按如下方式绘制表格版本:

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])
输出:

通过向单元格中添加一些背景色,可以使表格打印的样式更加美观:

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])
输出:

更多想法/变体请参见(所有这些示例均取自此)

编辑 我突然想到,您可能希望在同一个图形上绘制图像和表格。您可以这样做以获得如下结果:


这是一张图片,其中有一些示例代码可以帮助您入门。

当df大小较大时会发生什么情况,例如2000,那么您必须小心您的大小,并可能将表格分为几页。您可以通过如下方式创建一个图形,调整其大小以填充一张常规的8.5 x 11纸张(或者可能是一个标准的pdf页面):
plt.figure(figsize=(7.5,10))
。除了1英寸的边距(这应该是合理的)之外,这可以让你尽可能多地填充数据。我想可能会将大数据保存在PDF句柄中。谢谢你的帮助!
ax.子批(111)
的作用是什么?此外,是否有可能使决议更好?我的图很模糊。那么如何将这些图包含到pdf文件中呢?命令是什么?是report.savefig(ax.table())