我知道拥有一个传奇的标题似乎相当多余,但是有可能使用matplotlib吗?
这是我的代码片段:
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
one = mpatches.Patch(facecolor='#f3f300', label='label1', linewidth = 0.5, edgecolor = 'black')
two = mpatches.Patch(facecolor='#ff9700', label = 'label2', linewidth = 0.5, edgecolor = 'black')
three = mpatches.Patch(facecolor='#ff0000', label = 'label3', linewidth = 0.5, edgecolor = 'black')
legend = plt.legend(handles=[one, two, three], loc = 4, fontsize = 'small', fancybox = True)
frame = legend.get_frame() #sets up for color, edge, and transparency
frame.set_facecolor('#b4aeae') #color of legend
frame.set_edgecolor('black') #edge color of legend
frame.set_alpha(1) #deals with …Run Code Online (Sandbox Code Playgroud) 我正在绘制龙卷风的起点/终点位置.csv文件具有以下数据:
TouchDownLat TouchDownLong LiftoffLat LiftoffLong
31.53 -97.15 31.74 -96.88
46.45 -100.67 46.67 -100.47
43.1 -83.85 43.17 -83.42
Run Code Online (Sandbox Code Playgroud)
等等...
我所做的是每个纬度和经度,并将其分成一个numpy数组,如下:
import matplotlib.pyplot as plt
import csv
import numpy as np
from mpl_toolkits.basemap import Basemap
with open(fname, 'rb') as f:
w = csv.reader(f, delimiter = ',')
for i, line in enumerate (w):
if i == 0 or line[2][0:4] not in str(range(2007,2018)):
pass
else:
lat_td.append(line[27])
long_td.append(line[28])
lat_lift.append(line[29])
long_lift.append(line[30])
touchdown = np.array([[lat_td], [long_td]])
lift = np.array([[lat_lift], [long_lift]])
Run Code Online (Sandbox Code Playgroud)
对于底图,我找到了所有纬度/经度的最大值/最小值,这样它就可以制作一张地图来切断没有龙卷风的状态(例如:我不希望看到加利福尼亚州看到EF -5龙卷风地点)
m = Basemap(projection = 'merc', …Run Code Online (Sandbox Code Playgroud) 我正在寻找在 Cartopy 地图上绘制一个形状优美的多边形。我查看了 Cartopy 和 shapely 文档,并查看了 StackOverflow 上的各种解决方案,但似乎没有任何效果,我不确定为什么。
这是我所拥有的:
from shapely.geometry.polygon import Polygon
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import matplotlib.pyplot as plt
# make the map
bounds = [(-122., -72., 25., 50.)]
plt.figure(figsize=(5, 3))
ax = plt.axes(projection=ccrs.LambertConformal())
ax.set_extent(*bounds, crs=ccrs.PlateCarree())
ax.add_feature(cfeature.COASTLINE.with_scale('50m'), linewidth=0.75)
ax.add_feature(cfeature.STATES, linewidth=0.5)
# add in the polygon
ax.add_geometries([polygon], crs=ccrs.PlateCarree(), facecolor = 'b', edgecolor='black', alpha=0.5)
Run Code Online (Sandbox Code Playgroud)
使用当前的代码,我得到了一张只有美国的空白图像。我认为:1)投影是错误的,而是将多边形放置在其他地方,或者2)多边形已ax.add_geometry正确放置在地图上,但由于属性设置不正确而未显示。
对于上述内容,polygon如下:
polygon = Polygon[(-6719446.159777582, 8747162.244957967),
(-6714522.73594268, 8747162.244957967),
(-6714522.73594268, 8742238.821123065),
(-6704675.888272878, 8742238.821123065),
(-6704675.888272878, 8737315.397288164),
(-6689905.616768174, 8737315.397288164), …Run Code Online (Sandbox Code Playgroud)