2019-03-31 05:22:00 +00:00
|
|
|
import fire
|
2019-02-17 06:20:20 +00:00
|
|
|
import matplotlib.pyplot as plt
|
2019-03-31 05:22:00 +00:00
|
|
|
from utils import logger
|
|
|
|
from constants import BIOMES
|
2019-02-28 10:04:47 +00:00
|
|
|
|
2019-02-17 06:20:20 +00:00
|
|
|
import pandas as pd
|
|
|
|
import cartopy.crs as ccrs
|
|
|
|
|
2019-02-28 10:04:47 +00:00
|
|
|
def draw(df, path=None):
|
2019-03-31 05:22:00 +00:00
|
|
|
logger.debug('draw(df, %s)', path)
|
2019-02-27 11:36:20 +00:00
|
|
|
biomes = {}
|
|
|
|
biome_numbers = df['biome_num'].unique()
|
2019-02-17 06:20:20 +00:00
|
|
|
|
2019-03-05 07:59:30 +00:00
|
|
|
for i, row in df.iterrows():
|
2019-02-27 11:36:20 +00:00
|
|
|
if row.biome_num in biomes:
|
2019-03-31 05:22:00 +00:00
|
|
|
biomes[row.biome_num]['x'].append(row.longitude)
|
|
|
|
biomes[row.biome_num]['y'].append(row.latitude)
|
2019-02-27 11:36:20 +00:00
|
|
|
else:
|
2019-03-31 05:22:00 +00:00
|
|
|
biomes[row.biome_num] = { 'x': [row.longitude], 'y': [row.latitude] }
|
2019-02-17 06:20:20 +00:00
|
|
|
|
2019-02-27 11:36:20 +00:00
|
|
|
ax = plt.axes(projection=ccrs.PlateCarree())
|
|
|
|
ax.stock_img()
|
2019-03-31 05:22:00 +00:00
|
|
|
|
2019-02-17 06:20:20 +00:00
|
|
|
|
2019-02-27 11:36:20 +00:00
|
|
|
for n in biome_numbers:
|
2019-03-31 05:22:00 +00:00
|
|
|
xs = biomes[n]['x']
|
|
|
|
ys = biomes[n]['y']
|
|
|
|
scatter = ax.scatter(xs, ys, s=4, c=BIOMES[n]['color'], transform=ccrs.PlateCarree())
|
|
|
|
scatter.set_label(BIOMES[n]['name'])
|
|
|
|
|
|
|
|
ax.legend()
|
|
|
|
figure = plt.gcf()
|
|
|
|
figure.set_size_inches(20, 18)
|
2019-02-28 10:04:47 +00:00
|
|
|
if path:
|
|
|
|
plt.savefig(path)
|
|
|
|
else:
|
|
|
|
plt.show()
|
2019-02-17 06:20:20 +00:00
|
|
|
|
2019-03-31 05:22:00 +00:00
|
|
|
def draw_cmd(path=None):
|
|
|
|
draw(pd.read_pickle('data.p'), path=path)
|
|
|
|
|
2019-02-27 11:36:20 +00:00
|
|
|
if __name__ == "__main__":
|
2019-03-31 05:22:00 +00:00
|
|
|
fire.Fire(draw_cmd)
|