Python - 一个页面中有多个数字的 pdf 文件(没有子图!!



我正在尝试生成一个pdf文件(带有PdfFile(,在一页中包含多个数字。

最明显的解决方案是使用子图。但是,就我而言,这是不可能的,因为每个情节都是由不同的函数产生的。例如,有一个函数def plotPDF(inputData)将绘制概率分布函数 (PDF(,另一个函数def plotCDF(inputData)将绘制累积分布函数 (CDF(。我的代码包含多达 20 个不同的函数,这些函数在调用时会产生不同的绘图。

我想做的是选择其中一些图并生成一个pdf文件,其中它们包含在同一页面中。按照PDF和CDF的例子,我想制作一个pdf文件,其中包含一个页面,其中两个图彼此相邻(与子图类似(。

我尝试使用子图来执行此操作,但我不能直接调用子图中的函数。也就是说,以下代码不起作用:

fig, ax = plt.subplots(nrows=1, ncols=2)
plt.subplot(1, 2, 1)
plotPDF(inputData)
plt.subplot(1, 2, 2)
plotCDF(inputData)
plt.show()

有人知道如何解决这个问题吗?我需要像这样进行,因为我需要绘图函数独立于其他目的。制作子图意味着改变这种结构,并且会使代码的通用性降低。

提前感谢!

我不知道有没有办法按照你的要求去做,也许其他人会知道......

编写绘图函数的推荐方法是将对 Axes 对象的引用传递给该函数,并编写函数以使用该轴进行绘图。

所以在您的情况下:

def plotPDF(data, ax=None):
ax = ax or plt.gca() # if no axes, use current axes
plt.sca(ax) # set axes as current axes (important if you are using the pyplot API)
# the rest of the function goes here
def plotCDF(data, ax=None):
ax = ax or plt.gca()
plt.sca(ax)
(...)

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
plotPDF(inputData, ax=ax1)
plotCDF(inputData, ax=ax2)
plt.show()

你读过类似帖子的答案吗?那篇文章中的答案包含许多将图像保存到pdf文件中的方法,据我所知,只有一种(matplotlib后端(需要子图。

您也可以将文件单独保存为 png 文件,然后使用 LaTeX/Word/另一种原始方式将它们排列成 pdf,这可能很乏味。

否则,您能否详细说明为什么使用子图不适用于您的函数?也许有一种方法可以使用子图,但是您需要向我们展示代码。

最新更新