world-ecoregion/draw.py

44 lines
1.1 KiB
Python
Raw Normal View History

import fire
2019-02-17 06:20:20 +00:00
import matplotlib.pyplot as plt
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):
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
for i, row in df.iterrows():
2019-02-27 11:36:20 +00:00
if row.biome_num in biomes:
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:
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-02-17 06:20:20 +00:00
2019-02-27 11:36:20 +00:00
for n in biome_numbers:
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
def draw_cmd(path=None):
draw(pd.read_pickle('data.p'), path=path)
2019-02-27 11:36:20 +00:00
if __name__ == "__main__":
fire.Fire(draw_cmd)