我有一个matplotlib.path.Path对象。如何将其渲染为位图(或具有颜色值的数组)。
我需要使用后端/渲染器绘制对象,但是我该怎么做呢?
编辑:
matplotlib的大多数可绘制对象(标记,轴等)均为矢量格式。这些对象是Path的子类。我想将它们渲染为位图,换句话说,将其栅格化。
示例:我绘制了一个圆形标记“ bo”。我需要做什么才能获得一个圆形标记的位图?我不能只画一个圆并将其涂成蓝色。我想从绘图中获取任何标记并获取其位图。只是具有正确颜色,形状和大小以及所有其他属性的一个标记。同样,图中也不应包含背景或前景或任何其他元素。这种情况类似于图例绘制其符号的方式。我怎么做?
这是一个如何使它工作的技巧。基本上创建一个空的图形,并在画布的中央绘制路径。然后将画布作为字符串。然后以该图为中心。我会接受这一点,直到找到更好的解决方案。在下面的代码中X是包含栅格化符号的数组。下图显示了栅格化的符号。
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
import numpy
import pylab
# create figure and draw symbol with three points
fig = Figure(figsize=(5,4), dpi=600)
ax = fig.add_subplot(111)
ax.plot([0,1,2],[0,0,0], '-o', mec='b', mfc='g')
# get canvas, draw and get as string
canvas = FigureCanvasAgg(fig)
canvas.draw()
s = canvas.tostring_rgb()
# convert to array
l,b,w,h = fig.bbox.bounds
w, h = int(w), int(h)
X = numpy.fromstring(s, numpy.uint8)
X.shape = h, w, 3
# plot only the center as bitmap
pylab.imshow(X[h/2-50:h/2+50, w/2-0:w/2+80,:])
pylab.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句