json数据解析+画出散点和边界图

1. 数据是json格式

2. 函数功能:
给出5个顶点,画出边界,画图展示给定的散点是不是在由这5个顶点构成的多边形图形内。给出了两种代码,未注释的是优化后的代码,注释的是优化前的代码.

3. 代码结果展示
请添加图片描述
4. 代码展示:优化后的代码

import json
import matplotlib.pyplot as plt

# json数据的读取
def read_from_file(path):
    with open(path, "r") as f:
        point_info = json.load(f)  # 数据读取
        coordinate_list=[] #建立列表,每一个主键对应的坐标作为一个整体,加入这个列表
        for key_info in point_info.values():
            temp = resolution(key_info)
            coordinate_list.append(temp)
        return coordinate_list

def resolution(keys_value):#把一个主键的点存储到列表
    coordinate = [[],[]]
    for key_value in keys_value.values():
        coordinate[0].append(key_value['x'])
        coordinate[1].append(key_value['y'])
    return coordinate


def plot(path):
    coordinate_list=read_from_file(path)
    print(coordinate_list[1])
    coordinate_list[1][0].append(coordinate_list[1][0][0])
    coordinate_list[1][1].append(coordinate_list[1][1][0])
    print(coordinate_list[1])
    plt.scatter(coordinate_list[0][0], coordinate_list[0][1], c='red', edgecolors='none', s=20) #散点图
    plt.plot(coordinate_list[1][0], coordinate_list[1][1], color='b') #边界图
    #显示坐标值
    for a, b in zip(coordinate_list[1][0], coordinate_list[1][1]):
        plt.text(a, b, (a, b))
    plt.show()

if __name__ == "__main__":
    data = r"D:\Pythoncode\20plot\point_and_polygon.json"
    # info = read_from_file(data)
    info=plot(data)

5. 未优化之前的代码

# import json
# import matplotlib.pyplot as plt
# #json数据的读取
# def read_from_file(path):
#     with open(path, "r") as f:
#         point_info = json.load(f)#数据读取
#
#         scatter=point_info['generated_points']#获取散点坐标
#         scatter_point_x=[];
#         scatter_point_y =[];
#         for keyv in scatter.values():
#             scatter_point_x.append(keyv['x'])
#             scatter_point_y.append(keyv['y'])
#
#         polygon_point=point_info['polygon']  #获取多边形点的做标
#         polygon_point_x = [];
#         polygon_point_y = [];
#         for keyvs in polygon_point.values():
#             polygon_point_x.append(keyvs['x'])
#             polygon_point_y.append(keyvs['y'])
#         # print(polygon_point_x)
#         # print(polygon_point_y)
#     return scatter_point_x,scatter_point_y, polygon_point_x, polygon_point_y
#
#
# def plot(path):
#     x1,y1,x2,y2 = read_from_file(data)
#     x2.append(x2[0])
#     y2.append(y2[0])
#     plt.scatter(x1, y1, c='red', edgecolors='none', s=20)
#
#     plt.plot(x2, y2, color='b')
#     # #显示坐标值
#     # for a, b in zip(x2, y2):
#     #     plt.text(a, b, (a, b))
#
#     plt.show()
#     print(x2)
#     print(y2)
#
#
#
# if __name__=="__main__":
#     data=r"D:\Pythoncode\20plot\point_and_polygon(2).json"
#     info=plot(data)

6、用到的json数据

{
   "generated_points" : {
      "0" : {
         "x" : -1.0,
         "y" : 1.75
      },
      "1" : {
         "x" : -1.0,
         "y" : 1.4000000000000004
      },
      "10" : {
         "x" : -0.20000000000000007,
         "y" : 1.0500000000000003
      },
      "11" : {
         "x" : -0.20000000000000007,
         "y" : 0.70000000000000018
      },
      "12" : {
         "x" : 0.59999999999999987,
         "y" : 2.7999999999999998
      },
      "13" : {
         "x" : 0.59999999999999987,
         "y" : 2.4500000000000002
      },
      "14" : {
         "x" : 0.59999999999999987,
         "y" : 2.1000000000000001
      },
      "15" : {
         "x" : 0.59999999999999987,
         "y" : 1.75
      },
      "16" : {
         "x" : 0.59999999999999987,
         "y" : 1.4000000000000004
      },
      "17" : {
         "x" : 0.59999999999999987,
         "y" : 1.0500000000000003
      },
      "18" : {
         "x" : 0.59999999999999987,
         "y" : 0.70000000000000018
      },
      "19" : {
         "x" : 0.59999999999999987,
         "y" : 0.35000000000000009
      },
      "2" : {
         "x" : -1.0,
         "y" : 1.0500000000000003
      },
      "20" : {
         "x" : 1.3999999999999999,
         "y" : 3.1499999999999999
      },
      "21" : {
         "x" : 1.3999999999999999,
         "y" : 2.7999999999999998
      },
      "22" : {
         "x" : 1.3999999999999999,
         "y" : 2.4500000000000002
      },
      "23" : {
         "x" : 1.3999999999999999,
         "y" : 2.1000000000000001
      },
      "24" : {
         "x" : 1.3999999999999999,
         "y" : 1.75
      },
      "25" : {
         "x" : 1.3999999999999999,
         "y" : 1.4000000000000004
      },
      "26" : {
         "x" : 1.3999999999999999,
         "y" : 1.0500000000000003
      },
      "27" : {
         "x" : 1.3999999999999999,
         "y" : 0.70000000000000018
      },
      "28" : {
         "x" : 1.3999999999999999,
         "y" : 0.35000000000000009
      },
      "29" : {
         "x" : 2.1999999999999997,
         "y" : 3.1499999999999999
      },
      "3" : {
         "x" : -1.0,
         "y" : 0.70000000000000018
      },
      "30" : {
         "x" : 2.1999999999999997,
         "y" : 2.7999999999999998
      },
      "31" : {
         "x" : 2.1999999999999997,
         "y" : 2.4500000000000002
      },
      "32" : {
         "x" : 2.1999999999999997,
         "y" : 2.1000000000000001
      },
      "33" : {
         "x" : 2.1999999999999997,
         "y" : 1.75
      },
      "34" : {
         "x" : 2.1999999999999997,
         "y" : 1.4000000000000004
      },
      "35" : {
         "x" : 2.1999999999999997,
         "y" : 1.0500000000000003
      },
      "36" : {
         "x" : 2.1999999999999997,
         "y" : 0.70000000000000018
      },
      "37" : {
         "x" : 2.1999999999999997,
         "y" : 0.35000000000000009
      },
      "38" : {
         "x" : 2.9999999999999996,
         "y" : 3.1499999999999999
      },
      "39" : {
         "x" : 2.9999999999999996,
         "y" : 2.7999999999999998
      },
      "4" : {
         "x" : -1.0,
         "y" : 0.35000000000000009
      },
      "40" : {
         "x" : 2.9999999999999996,
         "y" : 2.4500000000000002
      },
      "41" : {
         "x" : 2.9999999999999996,
         "y" : 2.1000000000000001
      },
      "42" : {
         "x" : 2.9999999999999996,
         "y" : 1.75
      },
      "43" : {
         "x" : 2.9999999999999996,
         "y" : 1.4000000000000004
      },
      "44" : {
         "x" : 2.9999999999999996,
         "y" : 1.0500000000000003
      },
      "45" : {
         "x" : 2.9999999999999996,
         "y" : 0.70000000000000018
      },
      "46" : {
         "x" : 2.9999999999999996,
         "y" : 0.35000000000000009
      },
      "47" : {
         "x" : 3.7999999999999998,
         "y" : 2.7999999999999998
      },
      "48" : {
         "x" : 3.7999999999999998,
         "y" : 2.4500000000000002
      },
      "49" : {
         "x" : 3.7999999999999998,
         "y" : 2.1000000000000001
      },
      "5" : {
         "x" : -1.0,
         "y" : 0.0
      },
      "50" : {
         "x" : 3.7999999999999998,
         "y" : 1.75
      },
      "51" : {
         "x" : 3.7999999999999998,
         "y" : 1.4000000000000004
      },
      "52" : {
         "x" : 3.7999999999999998,
         "y" : 1.0500000000000003
      },
      "53" : {
         "x" : 3.7999999999999998,
         "y" : 0.70000000000000018
      },
      "54" : {
         "x" : 3.7999999999999998,
         "y" : 0.35000000000000009
      },
      "55" : {
         "x" : 4.5999999999999996,
         "y" : 2.7999999999999998
      },
      "56" : {
         "x" : 4.5999999999999996,
         "y" : 2.4500000000000002
      },
      "57" : {
         "x" : 4.5999999999999996,
         "y" : 2.1000000000000001
      },
      "58" : {
         "x" : 4.5999999999999996,
         "y" : 1.75
      },
      "59" : {
         "x" : 4.5999999999999996,
         "y" : 1.4000000000000004
      },
      "6" : {
         "x" : -0.20000000000000007,
         "y" : 2.4500000000000002
      },
      "60" : {
         "x" : 4.5999999999999996,
         "y" : 1.0500000000000003
      },
      "61" : {
         "x" : 4.5999999999999996,
         "y" : 0.70000000000000018
      },
      "62" : {
         "x" : 5.3999999999999995,
         "y" : 2.4500000000000002
      },
      "63" : {
         "x" : 5.3999999999999995,
         "y" : 2.1000000000000001
      },
      "64" : {
         "x" : 5.3999999999999995,
         "y" : 1.75
      },
      "65" : {
         "x" : 5.3999999999999995,
         "y" : 1.4000000000000004
      },
      "66" : {
         "x" : 5.3999999999999995,
         "y" : 1.0500000000000003
      },
      "67" : {
         "x" : 5.3999999999999995,
         "y" : 0.70000000000000018
      },
      "68" : {
         "x" : 6.1999999999999993,
         "y" : 2.4500000000000002
      },
      "69" : {
         "x" : 6.1999999999999993,
         "y" : 2.1000000000000001
      },
      "7" : {
         "x" : -0.20000000000000007,
         "y" : 2.1000000000000001
      },
      "70" : {
         "x" : 6.1999999999999993,
         "y" : 1.75
      },
      "71" : {
         "x" : 6.1999999999999993,
         "y" : 1.4000000000000004
      },
      "72" : {
         "x" : 6.1999999999999993,
         "y" : 1.0500000000000003
      },
      "8" : {
         "x" : -0.20000000000000007,
         "y" : 1.75
      },
      "9" : {
         "x" : -0.20000000000000007,
         "y" : 1.4000000000000004
      }
   },
   "polygon" : {
      "point_0" : {
         "x" : -1.0,
         "y" : 2.0
      },
      "point_1" : {
         "x" : 1.5,
         "y" : 3.5
      },
      "point_2" : {
         "x" : 7.0,
         "y" : 2.5
      },
      "point_3" : {
         "x" : 6.0,
         "y" : 0.5
      },
      "point_4" : {
         "x" : 0.0,
         "y" : 0.0
      }
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值