gpt4 book ai didi

python - 如何将 matplotlib 路径对象转换为位图?

转载 作者:行者123 更新时间:2023-11-28 17:41:01 25 4
gpt4 key购买 nike

我有一个 matplotlib.path.Path 对象。如何将其渲染为位图(或具有颜色值的数组)。

我想我必须使用后端/渲染来绘制对象,但我该怎么做呢?

编辑:

大多数 matplotlib 的可绘制对象(标记、轴等)都是矢量格式。这些对象是 Path 的子类。我想将它们呈现为位图,换句话说,栅格化它们。

示例:我画了一个圆形标记“bo”。我需要做什么才能得到一个圆形标记的位图?我不能只画一个圆圈然后把它涂成蓝色。我想从绘图中获取任何标记并获取其位图。只有一个具有正确颜色、形状和大小以及所有其他属性的标记。此外,图中不应包含背景或前景或任何其他元素。这种情况类似于图例绘制其符号的方式。我怎么做?

最佳答案

这是一个如何让它工作的技巧。基本上创建一个空图形并将中心的路径绘制到该 Canvas 。然后将 Canvas 作为字符串获取。然后取该图形的中心。在我找到更好的解决方案之前,我会接受这一点。在下面的代码中,X 是一个包含栅格化符号的数组。下图显示了栅格化符号。 rasterized symbol

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()

关于python - 如何将 matplotlib 路径对象转换为位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24277857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com