用matplotlib渲染postscript

时间:2015-03-04 12:27:15

标签: python matplotlib postscript

是否可以在Matplotlib中输出postscript?例如这个小方块:

newpath
0 0 moveto
1 0 lineto
1 1 lineto
0 1 lineto
0 0 lineto
stroke

我想在Matplotlip中加载这个代码并在IPython上渲染它(只是一个例子)。

1 个答案:

答案 0 :(得分:2)

Matplotlib有一个Path接口,它的工作方式非常相似: http://matplotlib.org/users/path_tutorial.html

但是你必须加载文本并自己做一些修改。但请考虑这个例子:

import matplotlib.path as mpath
import matplotlib.patches as patches
import matplotlib.pyplot as plt

从示例中以文本字符串开头。

instr = """newpath
0 0 moveto
1 0 lineto
1 1 lineto
0 1 lineto
0 0 lineto
stroke"""

在换行符上拆分,然后删除第一行和最后一行。也许最后一个应该用于最终格式化?

verts = instr.split('\n')[1:-1]
verts

将每一行转换为坐标和代码。

code_lookup = {'moveto': mpath.Path.MOVETO,
               'lineto': mpath.Path.LINETO}

coords = [(i.split(' ')[0], i.split(' ')[1]) for i in verts]
codes = [code_lookup[i.split(' ')[2]] for i in verts]

# set the last code to close the polygon
codes[-1] = mpath.Path.CLOSEPOLY

构造多边形。

mypath = mpath.Path(coords, codes)
mypatch = patches.PathPatch(mypath, facecolor='orange', lw=2)

绘制结果。

fig, ax = plt.subplots(subplot_kw={'aspect': 1.0, 
                                   'xlim': [-1,2], 
                                   'ylim': [-1,2]})


ax.add_patch(mypatch)

enter image description here