python建模地图
生活随笔
收集整理的這篇文章主要介紹了
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題用到的圖,五個州涂上顏色,從文件中讀取數據根據數據確定圓圈大小。代碼如下:
從文件中讀取數據,文件放在 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建模地图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java反射和映射
- 下一篇: python建模用什么库_Python