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
}
}
}