使输出的pdf文件二进制相同
我正在使用Matplotlib生成大量绘图(数千个)。我会经常调整生成绘图的代码中的一些次要内容,但这些更改通常只会影响少数绘图 当我将新的绘图推送到一个公共存储库时,我希望使用类似于使输出的pdf文件二进制相同,pdf,matplotlib,pdf-generation,diff,Pdf,Matplotlib,Pdf Generation,Diff,我正在使用Matplotlib生成大量绘图(数千个)。我会经常调整生成绘图的代码中的一些次要内容,但这些更改通常只会影响少数绘图 当我将新的绘图推送到一个公共存储库时,我希望使用类似于rsync或diff的方法来确定哪些绘图已经实际更改。不幸的是,运行diff new_plot.pdf old_plot.pdf总是将文件标识为不同的,即使打印脚本没有任何更改 当我输出到.png时,文件是相同的。当我输出到.eps时,输出几乎相同,但运行diff显示有几行已交换。我怀疑造成这种差异的原因有两个:
rsync
或diff
的方法来确定哪些绘图已经实际更改。不幸的是,运行diff new_plot.pdf old_plot.pdf
总是将文件标识为不同的,即使打印脚本没有任何更改
当我输出到.png
时,文件是相同的。当我输出到.eps
时,输出几乎相同,但运行diff显示有几行已交换。我怀疑造成这种差异的原因有两个:
.eps
实例中的工作方式显然略有不同,所以我想不是.pdf
元数据,或者强制matplotlib使用更具确定性的绘图方法,或者将文件提供给一个可以将其视为相同的diff工具?这包含如何使用设置创建和修改日期。
我已经尝试了代码并执行了diff
,我的pdf数据之间没有任何差异
PS:最后两行会影响文件中的差异,因此请尝试使用所需的固定值附加它们:
d['CreationDate'] = datetime.datetime(2009, 11, 13)
d['ModDate'] = datetime.datetime.today()
到
你用什么把matplotlib图形转换成pdf格式?@Joop,我用的是类似于
FigureCanvasAgg(图)。print_figure(名称)
(尽管在更复杂的脚本中可能会被分成几行)
d['CreationDate'] = datetime.datetime(2014, 9, 6)
d['ModDate'] = datetime.datetime(2014, 9, 6)