0

使用下面的代码,我想创建一个两页的 pdf,两页都是标准纵向(8.5 英寸宽和 11 英寸高)。

如何将第二页的绘图区域设置为仅使用页面的上半部分?我尝试使用注释掉的代码行,但这只是将页面大小减半,而不是将页面大小保持不变并将绘图区域减半。

谢谢!

import numpy as np

import matplotlib
matplotlib.use("PDF")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

import seaborn as sns
sns.set()

xs = np.linspace(-np.pi, np.pi, 40)
ys = np.sin(xs)
with PdfPages('multipage_pdf.pdf') as pdf:
    plt.figure(figsize=(8.5, 11))
    plt.plot(xs, ys, '-')
    plt.title('Page One')
    pdf.attach_note('Full page')
    pdf.savefig()
    plt.close()

    plt.figure(figsize=(8.5, 11))
#    plt.figure(figsize=(8.5, 5.5))
    plt.plot(xs, ys, '-')
    plt.title('Page Two')
    pdf.attach_note('Want top half of page')
    pdf.savefig()
    plt.close()
4

2 回答 2

1

在其他人的帮助下,这是解决方案(非常简单)。

import numpy as np

import matplotlib
matplotlib.use("PDF")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

import seaborn as sns
sns.set()

xs = np.linspace(-np.pi, np.pi, 40)
ys = np.sin(xs)
with PdfPages('multipage_pdf.pdf') as pdf:
    plt.figure(figsize=(8.5, 11))
    plt.plot(xs, ys, '-')
    plt.title('Page One')
    pdf.attach_note('Full page')
    pdf.savefig()
    plt.close()

    fig = plt.figure(figsize=(8.5, 11))
    ax = fig.add_subplot(211)
    ax.plot(xs, ys, '-')
    ax.set_title('Page Two')
    pdf.attach_note('Want top half of page')
    pdf.savefig()
    plt.close()
于 2020-12-03T15:41:12.357 回答
0

经过大量研究,我没有找到最佳解决方案。所以我画了多张图,把第二张的代码写成空白图。如果我的回答会减少从其他人那里得到答案的机会,我很抱歉。

import numpy as np
import matplotlib
matplotlib.use("PDF")
import matplotlib.pyplot as plt
from matplotlib.backends.backend_pdf import PdfPages

import seaborn as sns
sns.set()

xs = np.linspace(-np.pi, np.pi, 40)
ys = np.sin(xs)

pp = PdfPages('SaveMultiPDF.pdf')

fig = plt.figure(figsize=(8.5, 11))
ax = fig.add_subplot(111)
ax.plot(xs, ys, '-')
ax.set_title('Page One')
pp.attach_note('Full page')
plt.savefig(pp, format='pdf')
fig.clf()

fig1 = plt.figure(figsize=(8.5, 11))
ax1 = fig1.add_subplot(211)
ax1.plot(xs, ys, '-')
ax1.set_title('Page Two')
pp.attach_note('Want top half of page')
# blank graph
sns.set_style('white')
ax2 = fig1.add_subplot(212)
ax2.plot([], [])
ax2.axis('off')
plt.savefig(pp, format='pdf')
fig1.clf()

pp.close()
于 2020-12-03T04:06:39.510 回答