Matplotlib:使用Python根据获得的经纬度坐标画图

前言

因为根据地址库的经纬度坐标很难肉眼看出规律,所以想画个图看看。
网上看了很多文章,大多都是基于标准地图的,但我只是想画个相对的坐标图就好。
所以干脆就用matplotlib自己写一个吧。

代码

import pandas as pd
import numpy as np
import math
import matplotlib.pyplot as plt

data = pd.read_csv('复赛标准地址库.csv', sep='\t', dtype={'locationx':'str', 'locationy':'str', 'street_num':'str', 'street':'str', 'township':'str'})

test_list = ['福建省', '厦门市', '集美区', '侨英街道', '侨英路']
temp_data = data[(data['province']==test_list[0])&(data['city']==test_list[1])&(data['district']==test_list[2])&(data['township']==test_list[3])&(data['street']==test_list[4])]

#经度的上下限
x_list = temp_data['locationx'].value_counts().index.to_list()
x_num_list = [float(x) for x in x_list]
max_lng = round((round(max(x_num_list),4)+0.0001),4)
min_lng = round((round(min(x_num_list),4)-0.0001),4)
range_lng = round(max_lng-min_lng,2)*2000

#纬度的上下限
y_list = temp_data['locationy'].value_counts().index.to_list()
y_num_list = [float(y) for y in y_list]
max_lat = round((round(max(y_num_list),4)+0.0001),4)
min_lat = round((round(min(y_num_list),4)-0.0001),4) #min_lat = round((round(min(y_num_list),2) - 0.01),2)
range_lat = round(max_lat-min_lat,2)*2000

print(min_lng, max_lng, min_lat, max_lat)

#获得各个点的列表
name_list = temp_data.iloc[:,5].to_list()
lng_list = temp_data.iloc[:,6].to_list()
lat_list = temp_data.iloc[:,7].to_list()

# #画图
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
fig = plt.figure(figsize=(range_lng,range_lat)) #绘制画布
plt.xlim(min_lng, max_lng) #设定X轴的区间
plt.ylim(min_lat, max_lat) #设定y轴的区间

for text, lng, lat in zip(name_list,lng_list,lat_list):
    plt.plot(float(lng), float(lat), '.')
    plt.annotate(text, (float(lng), float(lat)))
plt.savefig('经纬度图片.png', dpi=300)

成果

最后因为坐标轴的异常点以及点太多,导致看起来不是特别好,将就看吧
在这里插入图片描述

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_42029733/article/details/107896598