日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python建模地图

發布時間:2023/12/31 python 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python建模地图 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

python畫地圖代碼,美賽建模

世界地圖
話不多說,上代碼,超級簡單。這個題把國家分為三類,每種類型的國家涂上不同的顏色,cn是中國,但是涂色時發現臺灣沒涂上顏色,于是把tw加上
圖片如下

代碼如下:

import pygal.maps.worldworldmap_chart = pygal.maps.world.World() worldmap_chart.title = 'Some countries' worldmap_chart.add('stable', ['ch', 'mv', 'cn','tw']) worldmap_chart.add('vulnerable', ['ga', 'by', 'pe', 'iq', 'sy','mx', 'nz', 'ng', 'ca', 'no','dk', 'is', 'au', 'de']) worldmap_chart.add('fragile', ['zw', 'af','sd','td']) worldmap_chart.render_to_file('bar_chart.svg')

運行完后生成一個名為bar_chart.svg的文件,右鍵,復制路徑(copy path),在瀏覽器中打開

美國地圖


這個圖是2019年美賽建模c題用到的圖,五個州涂上顏色,從文件中讀取數據根據數據確定圓圈大小。代碼如下:

from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt import pandas as pd import numpy as np from matplotlib import cm# 繪制基礎地圖,選擇繪制的區域,因為是繪制美國地圖,故選取如下經緯度,lat_0和lon_0是地圖中心的維度和經度map = Basemap(projection='stere',lat_0=90,lon_0=-105,\llcrnrlat=23.41 ,urcrnrlat=45.44,\llcrnrlon=-118.67,urcrnrlon=-64.52,\rsphere=6371200.,resolution='l',area_thresh=10000)map.drawmapboundary() # 繪制邊界 map.drawstates() map.drawcoastlines() map.drawcountries() map.drawcounties()parallels = np.arange(0.,90,10.) map.drawparallels(parallels,labels=[1,0,0,0],fontsize=10) # 繪制緯線meridians = np.arange(-110.,-60.,10.) map.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10) # 繪制經線posi=pd.read_csv("D:\\data1.csv") # 讀取數據 ## 原始數據有3228組數據,我只選擇了180個城市的數據 lat = np.array(posi["lat"][0:10]) # 獲取維度之維度值 lon = np.array(posi["lon"][0:10]) # 獲取經度值 pop = np.array(posi["pop"][0:10]) # 獲取人口數,轉化為numpy浮點型 size=(pop/np.max(pop))*1000 # 繪制散點圖時圖形的大小,如果之前pop不轉換為浮點型會沒有大小不一的效果 x,y = map(lon,lat) map.scatter(x,y,s=size) # 也可以使用Basemap的methord本身的scatter #plt.title('America')plt.show()

從文件中讀取數據,文件放在 D盤,文件內容如下,用wps表格編輯,另存為csv格式。

美國地圖,不過癮,再來一個

美國地圖帶顏色的

from __future__ import (absolute_import, division, print_function)import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap from matplotlib.colors import rgb2hex, Normalize from matplotlib.patches import Polygon from matplotlib.colorbar import ColorbarBasefig, ax = plt.subplots()m = Basemap(llcrnrlon=-119,llcrnrlat=20,urcrnrlon=-64,urcrnrlat=49,projection='lcc',lat_1=33,lat_2=45,lon_0=-95)m_ = Basemap(llcrnrlon=-190,llcrnrlat=20,urcrnrlon=-143,urcrnrlat=46,projection='merc',lat_ts=20) # do not change these numbersshp_info = m.readshapefile('st99_d00','states',drawbounds=True,linewidth=0.45,color='gray') shp_info_ = m_.readshapefile('st99_d00','states',drawbounds=False)popdensity = { 'New Jersey': 1, 'Rhode Island': 1, 'Massachusetts': 1, 'Connecticut': 1, 'Maryland': 1, 'New York': 1, 'Delaware': 1, 'Florida': 1, 'Ohio': 250, 'Pennsylvania': 300, 'Illinois': 1, 'California': 1, 'Hawaii': 1, 'Virginia': 50, 'Michigan': 1, 'Indiana': 1, 'North Carolina': 1, 'Georgia': 1, 'Tennessee': 1, 'New Hampshire': 1, 'South Carolina': 1, 'Louisiana': 1, 'Kentucky': 10, 'Wisconsin': 1, 'Washington': 1, 'Alabama': 1, 'Missouri': 1, 'Texas': 1, 'West Virginia': 200, 'Vermont': 1, 'Minnesota': 1, 'Mississippi': 1, 'Iowa': 1, 'Arkansas': 1, 'Oklahoma': 1, 'Arizona': 1, 'Colorado': 1, 'Maine': 1, 'Oregon': 1, 'Kansas': 1, 'Utah': 1, 'Nebraska': 1, 'Nevada': 1, 'Idaho': 1, 'New Mexico': 1, 'South Dakota': 1, 'North Dakota': 1, 'Montana': 1, 'Wyoming': 1, 'Alaska': 1}colors={} statenames=[] cmap = plt.cm.hot_r vmin = 0; vmax = 450 norm = Normalize(vmin=vmin, vmax=vmax) for shapedict in m.states_info:statename = shapedict['NAME']if statename not in ['District of Columbia','Puerto Rico']:pop = popdensity[statename]colors[statename] = cmap(np.sqrt((pop-vmin)/(vmax-vmin)))[:3]statenames.append(statename) for nshape,seg in enumerate(m.states):if statenames[nshape] not in ['Puerto Rico', 'District of Columbia']:color = rgb2hex(colors[statenames[nshape]])poly = Polygon(seg,facecolor=color,edgecolor=color)ax.add_patch(poly)AREA_1 = 0.005 AREA_2 = AREA_1 * 30.0 AK_SCALE = 0.19 HI_OFFSET_X = -1900000 HI_OFFSET_Y = 250000 AK_OFFSET_X = -250000 AK_OFFSET_Y = -750000for nshape, shapedict in enumerate(m_.states_info):if shapedict['NAME'] in ['Alaska', 'Hawaii']:seg = m_.states[int(shapedict['SHAPENUM'] - 1)]if shapedict['NAME'] == 'Hawaii' and float(shapedict['AREA']) > AREA_1:seg = [(x + HI_OFFSET_X, y + HI_OFFSET_Y) for x, y in seg]color = rgb2hex(colors[statenames[nshape]])elif shapedict['NAME'] == 'Alaska' and float(shapedict['AREA']) > AREA_2:seg = [(x*AK_SCALE + AK_OFFSET_X, y*AK_SCALE + AK_OFFSET_Y)\for x, y in seg]color = rgb2hex(colors[statenames[nshape]])poly = Polygon(seg, facecolor=color, edgecolor='gray', linewidth=.45)ax.add_patch(poly)light_gray = [0.8]*3 # define light gray color RGB x1,y1 = m_([-190,-183,-180,-180,-175,-171,-171],[29,29,26,26,26,22,20]) x2,y2 = m_([-180,-180,-177],[26,23,20]) # these numbers are fine-tuned manually m_.plot(x1,y1,color=light_gray,linewidth=0.8) # do not change them drastically m_.plot(x2,y2,color=light_gray,linewidth=0.8)ax_c = fig.add_axes([0.9, 0.1, 0.03, 0.8]) cb = ColorbarBase(ax_c,cmap=cmap,norm=norm,orientation='vertical',label=r'[population per $\mathregular{km^2}$]')plt.show()

當然,這種圖片是根據州的形狀涂顏色的,不能像上一張圖一樣定位一個點圖顏色。這種圖需要加載三個文件,是從GitHub上找的,百度網盤地址

https://pan.baidu.com/s/1gXh9kjeXLcgao8nV_bBsrg

下載完后將三個文件從文件夾中拿出來,跟代碼放在同一個文件夾

總結

以上是生活随笔為你收集整理的python建模地图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。