您好,登錄后才能下訂單哦!
這篇文章主要介紹了Python中excel和shp如何使用在matplotlib,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
關(guān)于excel和shp的使用在matplotlib
使用pandas 對excel進(jìn)行簡單操作
使用cartopy 讀取shpfile 展示到matplotlib中
利用shpfile文件中的一些字段進(jìn)行一些著色處理
#!/usr/bin/env python # -*- coding: utf-8 -*- # @File : map02.py # @Author: huifer # @Date : 2018/6/28 import folium import pandas as pd import requests import matplotlib.pyplot as plt import cartopy.crs as ccrs import zipfile import cartopy.io.shapereader as shaperead from matplotlib import cm from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter import os dataurl = "http://image.data.cma.cn/static/doc/A/A.0012.0001/SURF_CHN_MUL_HOR_STATION.xlsx" shpurl = "http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_admin_0_countries.zip" def download_file(url): """ 根據(jù)url下載文件 :param url: str """ r = requests.get(url, allow_redirects=True) try: open(url.split('/')[-1], 'wb').write(r.content) except Exception as e: print(e) def degree_conversion_decimal(x): """ 度分轉(zhuǎn)換成十進(jìn)制 :param x: float :return: integer float """ integer = int(x) integer = integer + (x - integer) * 1.66666667 return integer def unzip(zip_path, out_path): """ 解壓zip :param zip_path:str :param out_path: str :return: """ zip_ref = zipfile.ZipFile(zip_path, 'r') zip_ref.extractall(out_path) zip_ref.close() def get_record(shp, key, value): countries = shp.records() result = [country for country in countries if country.attributes[key] == value] countries = shp.records() return result def read_excel(path): data = pd.read_excel(path) # print(data.head(10)) # 獲取幾行 # print(data.ix[data['省份']=='浙江',:].shape[0]) # 計數(shù)工具 # print(data.sort_values('觀測場拔海高度(米)',ascending=False).head(10))# 根據(jù)值排序 # 判斷經(jīng)緯度是什么格式(度分 、 十進(jìn)制) 判斷依據(jù) %0.2f 是否大于60 # print(data['經(jīng)度'].apply(lambda x:x-int(x)).sort_values(ascending=False).head()) # 結(jié)果判斷為度分保存 # 坐標(biāo)處理 data['經(jīng)度'] = data['經(jīng)度'].apply(degree_conversion_decimal) data['緯度'] = data['緯度'].apply(degree_conversion_decimal) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent([70, 140, 15, 55]) ax.stock_img() ax.scatter(data['經(jīng)度'], data['緯度'], s=0.3, c='g') # shp = shaperead.Reader('ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp') # # 抽取函數(shù) 州:國家 # city_list = [country for country in countries if country.attributes['ADMIN'] == 'China'] # countries = shp.records() plt.savefig('test.png') plt.show() def gdp(shp_path): """ GDP 著色圖 :return: """ shp = shaperead.Reader(shp_path) cas = get_record(shp, 'SUBREGION', 'Central Asia') gdp = [r.attributes['GDP_MD_EST'] for r in cas] gdp_min = min(gdp) gdp_max = max(gdp) ax = plt.axes(projection=ccrs.PlateCarree()) ax.set_extent([45, 90, 35, 55]) for r in cas: color = cm.Greens((r.attributes['GDP_MD_EST'] - gdp_min) / (gdp_max - gdp_min)) ax.add_geometries(r.geometry, ccrs.PlateCarree(), facecolor=color, edgecolor='black', linewidth=0.5) ax.text(r.geometry.centroid.x, r.geometry.centroid.y, r.attributes['ADMIN'], horizontalalignment='center', verticalalignment='center', transform=ccrs.Geodetic()) ax.set_xticks([45, 55, 65, 75, 85], crs=ccrs.PlateCarree()) # x坐標(biāo)標(biāo)注 ax.set_yticks([35, 45, 55], crs=ccrs.PlateCarree()) # y 坐標(biāo)標(biāo)注 lon_formatter = LongitudeFormatter(zero_direction_label=True) lat_formatter = LatitudeFormatter() ax.xaxis.set_major_formatter(lon_formatter) ax.yaxis.set_major_formatter(lat_formatter) plt.title('GDP TEST') plt.savefig("gdb.png") plt.show() def run_excel(): if os.path.exists("SURF_CHN_MUL_HOR_STATION.xlsx"): read_excel("SURF_CHN_MUL_HOR_STATION.xlsx") else: download_file(dataurl) read_excel("SURF_CHN_MUL_HOR_STATION.xlsx") def run_shp(): if os.path.exists("ne_10m_admin_0_countries"): gdp("ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp") else: download_file(shpurl) unzip('ne_10m_admin_0_countries.zip', "ne_10m_admin_0_countries") gdp("ne_10m_admin_0_countries/ne_10m_admin_0_countries.shp") if __name__ == '__main__': # download_file(dataurl) # download_file(shpurl) # cas = get_record('SUBREGION', 'Central Asia') # print([r.attributes['ADMIN'] for r in cas]) # read_excel('SURF_CHN_MUL_HOR_STATION.xlsx') # gdp() run_excel() run_shp()
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Python中excel和shp如何使用在matplotlib”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。