通过以正确格式获取 Google Vision API 数据,使用 matplotlib 同时显示多个多边形
Display several polygons at once with matplotlib by getting Google Vision API data in the right format
我的目标是一次显示多个多边形(这是我从 Google Vision API 获得的数据)。
我有一个坐标列表,格式如下:
lst_coord = [['(742,335),(840,334),(840,351),(742,352)'], ['(304,1416),(502,1415),(502,1448),(304,1449)']
知道那些是字符串:
(742,548),(814,549),(814,563),(742,562)
<class 'str'>
import matplotlib.pyplot as plt
def plotpoly(coord,x,y):
coord.append(coord[0])
x, y = zip(*coord)
plt.plot(x,y)
for coord in lst_coord:
plotpoly(coord,x,y)
plt.show()
我收到这个错误:
AttributeError: 'str' object has no attribute 'append'
我已经尝试了很多不同的东西。但是我无法让它工作...
奖金:我的最终目标是在图片上显示这些多边形,我也在为此苦苦挣扎...
您可以使用 Polygon
个补丁,它们会自动关闭:
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
lst_coord = [['(742,335),(840,334),(840,351),(742,352)'], ['(304,1416),(502,1415),(502,1448),(304,1449)']]
patches = []
for coord in lst_coord:
patches.append(Polygon(eval(coord[0])))
fig, ax = plt.subplots()
ax.add_collection(PatchCollection(patches, fc='none', ec='red'))
ax.set_xlim(0,1000)
ax.set_ylim(0,1500)
plt.show()
我的目标是一次显示多个多边形(这是我从 Google Vision API 获得的数据)。
我有一个坐标列表,格式如下:
lst_coord = [['(742,335),(840,334),(840,351),(742,352)'], ['(304,1416),(502,1415),(502,1448),(304,1449)']
知道那些是字符串:
(742,548),(814,549),(814,563),(742,562)
<class 'str'>
import matplotlib.pyplot as plt
def plotpoly(coord,x,y):
coord.append(coord[0])
x, y = zip(*coord)
plt.plot(x,y)
for coord in lst_coord:
plotpoly(coord,x,y)
plt.show()
我收到这个错误:
AttributeError: 'str' object has no attribute 'append'
我已经尝试了很多不同的东西。但是我无法让它工作...
奖金:我的最终目标是在图片上显示这些多边形,我也在为此苦苦挣扎...
您可以使用 Polygon
个补丁,它们会自动关闭:
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
lst_coord = [['(742,335),(840,334),(840,351),(742,352)'], ['(304,1416),(502,1415),(502,1448),(304,1449)']]
patches = []
for coord in lst_coord:
patches.append(Polygon(eval(coord[0])))
fig, ax = plt.subplots()
ax.add_collection(PatchCollection(patches, fc='none', ec='red'))
ax.set_xlim(0,1000)
ax.set_ylim(0,1500)
plt.show()