मैं अजगर में छवियों की साजिश रचने के लिए नया हूँ। कृपया मेरी समस्या को हल करने में आपकी मदद की सराहना करें। मेरे पास एक सूची है जिसमें आस-पास के बहुभुजों के एक्स और वाई निर्देशांक की सूची वाली वस्तुओं का शब्दकोश है। मैं X और Y निर्देशांक निकालने में सक्षम था, लेकिन जब मैं Matplotlib का उपयोग करके बिंदुओं को प्लॉट करता हूं तो मुझे बहुभुजों का उचित आकार नहीं मिल रहा है।

import matplotlib.pyplot as plt

shapes = [{'shape_attributes': {'name': 'polygon', 'all_points_x': [35, 28, 27, 31, 40, 51, 62, 72, 74, 71, 65, 57, 41], 'all_points_y': [74, 55, 32, 16, 4, 6, 12, 35, 56, 74, 83, 86, 81]}, 'region_attributes': {}}, None, {'shape_attributes': {'name': 'polygon', 'all_points_x': [6, 16, 24, 44, 69, 77, 81, 82, 80, 76, 69, 62, 51, 26, 9, 7], 'all_points_y': [85, 77, 78, 83, 92, 100, 106, 115, 118, 120, 122, 125, 126, 112, 98, 92]}, 'region_attributes': {}}]

shapesCordinates = []
for shape in shapes:
    if shape is not None:
        x_cor = shape['shape_attributes']['all_points_x']
        y_cor = shape['shape_attributes']['all_points_y']
        for x, y in zip(x_cor, y_cor):
            shapesCordinates.append((x, y))
print(shapesCordinates)
shapesCordinates.append(shapesCordinates[0])
xs, ys = zip(*shapesCordinates)
plt.figure()
plt.plot(xs,ys) 
plt.show()
0
mohit guru 6 अप्रैल 2020, 20:46

1 उत्तर

सबसे बढ़िया उत्तर

आप अपने बहुभुजों को एक-एक करके बनाना चाह सकते हैं। plt.plot बिना अंतराल छोड़े सूची के सभी बिंदुओं को अगले से जोड़ देगा।

import matplotlib.pyplot as plt

shapes = [{'shape_attributes': {'name': 'polygon', 'all_points_x': [35, 28, 27, 31, 40, 51, 62, 72, 74, 71, 65, 57, 41], 'all_points_y': [74, 55, 32, 16, 4, 6, 12, 35, 56, 74, 83, 86, 81]}, 'region_attributes': {}}, None, {'shape_attributes': {'name': 'polygon', 'all_points_x': [6, 16, 24, 44, 69, 77, 81, 82, 80, 76, 69, 62, 51, 26, 9, 7], 'all_points_y': [85, 77, 78, 83, 92, 100, 106, 115, 118, 120, 122, 125, 126, 112, 98, 92]}, 'region_attributes': {}}]
plt.figure()
for shape in shapes:
    if shape is not None:
        x_cor = shape['shape_attributes']['all_points_x']
        y_cor = shape['shape_attributes']['all_points_y']
        plt.plot(x_cor+x_cor[:1], y_cor+y_cor[:1])
plt.show()

example plot

2
JohanC 6 अप्रैल 2020, 18:54