使用matplotlib

时间:2015-10-15 04:00:59

标签: python pdf matplotlib plot figure

我正在尝试使用matplot,Python 2.7和Windows 7将数字保存到pdf。我可以将数字保存为.png,但是当我尝试将其保存为{{ {1}} f,文件为空。以下是一些示例代码:

.pd

此代码有效,但当我将文件名更改为import numpy as np import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages x = [1, 2, 3, 4, 5] y = [6, 7, 8, 9, 10] linewidthPlot = '2' linestylePlot = '-' markerPlot = 'o' colorPlot = 'b' xlabel = 'x' ylabel = 'y' title = 'x v y' # Plot the data using matplot. fig1 = plt.figure() ax1 = fig1.gca() line1, = plt.plot(x, y, linewidth=linewidthPlot, linestyle=linestylePlot, marker=markerPlot, color=colorPlot) axisScale = 0.05 xmin = min(x) - (axisScale * (max(x) - min(x))) xmax = max(x) + (axisScale * (max(x) - min(x))) ymin = min(y) - (axisScale * (max(y) - min(y))) ymax = max(y) + (axisScale * (max(y) - min(y))) plt.axis([xmin, xmax, ymin, ymax]) ax1.ticklabel_format(useOffset=False) plt.grid() # Add a legend. first_legend = plt.legend([line1], ["data"], loc=1, numpoints=1) # Label the axes. plt.xlabel(xlabel) plt.ylabel(ylabel) plt.title(title) #pp = PdfPages("discard1.pdf") #plt.savefig(pp, format='pdf') #pp.close() plt.savefig('discard1.png') plt.show() ,或者使用discard1.pdf函数生成PdfPages PDF时,我最终会得到一个空白文件。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您只需将以下内容添加到脚本的末尾:

with PdfPages('discard1.pdf') as pdf:
    pdf.savefig(fig1)

然后会生成您图中的PDF文件。

答案 1 :(得分:1)

为了他人的教育:

正如Martin Evans指出的那样,这是Adobe Reader和其他一些pdf阅读器无法查看matplotlib创建的pdf数据的问题。

解决方案是改变linewidthPlot =' 2' to linewidthPlot = 2 in:

line1, = plt.plot(x, y, linewidth=linewidthPlot,
              linestyle=linestylePlot, marker=markerPlot, color=colorPlot)

也许这应该被报告为错误?