python - 使用 matplotlib 渲染 postscript

标签 python matplotlib postscript

Matplotlib 中可以输出 postscript 吗?例如这个小方 block :

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

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

最佳答案

Matplotlib 有一个 Path 接口(interface),其工作原理非常相似: 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

关于python - 使用 matplotlib 渲染 postscript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28854513/

相关文章:

Python:复制具有相同属性/字段的命名元组

python - 如何将 pyspark.sql.dataframe.DataFrame 转换回 databricks notebook 中的 sql 表

python - 每个 subplotSpec 的标题(子图中的子图)

python - 确保 matplotlib 颜色条在多个图形中看起来相同

java - 多页面方向 - Adob​​e Postscript 工具

python - 从串行连接获取 b'\x0 8'b'\x9e'b'\x1d' 或 b'\xe 0'b'\xe 0'b' 错误

python - 如何将 pandas 系列中的 'NaN' 字符串转换为 dropna 的空值?

python - 颜色后的 "-"(破折号)在 matplotlib 中有什么作用?

postscript - 像 Typekit 一样提供附记大纲

java - Java 在文件中间写入的最佳方式