diff --git a/view.py b/view.py index eb26767..92c98fb 100644 --- a/view.py +++ b/view.py @@ -11,10 +11,12 @@ try: import colorcet as cc cmap1 = cc.cm.CET_L11 cmap2 = cc.cm.CET_L12 + cmap3 = cc.cm.CET_L6.reversed() except ImportError: # No module colorcet import matplotlib.cm as cm cmap1 = cm.summer - cmap2 = cm.Blues + cmap2 = cm.ocean.reversed() + cmap3 = cm.Blues except ImportError: # No module matplotlib has_matplotlib = False @@ -24,10 +26,12 @@ if has_matplotlib: water = np.maximum(lakes_sea - dem, 0) max_elev = dem.max() max_depth = water.max() + max_lake_depth = lakes.max() ls = mcl.LightSource(azdeg=315, altdeg=45) norm_ground = plt.Normalize(vmin=sea_level, vmax=max_elev) norm_sea = plt.Normalize(vmin=0, vmax=max_depth) + norm_lake = plt.Normalize(vmin=0, vmax=max_lake_depth) rgb = ls.shade(dem, cmap=cmap1, vert_exag=1/scale, blend_mode='soft', norm=norm_ground) (X, Y) = dem.shape @@ -37,13 +41,23 @@ if has_matplotlib: extent = (-0.5*scale, (Y-0.5)*scale, -0.5*scale, (X-0.5)*scale) plt.imshow(np.flipud(rgb), extent=extent, interpolation='antialiased') alpha = (water > 0).astype('u1') - plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased') + lakes_alpha = ((lakes_sea - np.maximum(dem,sea_level)) > 0).astype('u1') + # plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased') + plt.imshow(np.flipud(water), alpha=np.flipud(alpha), cmap=cmap3, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased') + plt.imshow(np.flipud(water), alpha=np.flipud(lakes_alpha), cmap=cmap2, extent=extent, vmin=0, vmax=max_depth, interpolation='antialiased') sm1 = plt.cm.ScalarMappable(cmap=cmap1, norm=norm_ground) plt.colorbar(sm1).set_label('Elevation') - sm2 = plt.cm.ScalarMappable(cmap=cmap2, norm=norm_sea) - plt.colorbar(sm2).set_label('Water depth') + sm2 = plt.cm.ScalarMappable(cmap=cmap2, norm=norm_lake) + cb2 = plt.colorbar(sm2) + cb2.ax.invert_yaxis() + cb2.set_label('Lake Depth') + + sm3 = plt.cm.ScalarMappable(cmap=cmap3, norm=norm_sea) + cb3 = plt.colorbar(sm3) + cb3.ax.invert_yaxis() + cb3.set_label('Ocean Depth') plt.xlabel('X') plt.ylabel('Z') @@ -84,9 +98,10 @@ def stats(dem, lakes, scale=1): lake_surface = lake.sum() print('--- General ---') - print('Grid size: {:5d}x{:5d}'.format(dem.shape[0], dem.shape[1])) + print('Grid size (dem): {:5d}x{:5d}'.format(dem.shape[0], dem.shape[1])) + print('Grid size (lakes): {:5d}x{:5d}'.format(lakes.shape[0], lakes.shape[1])) if scale > 1: - print('Map size: {:5d}x{:5d}'.format(int(dem.shape[0]*scale), int(dem.shape[1]*scale))) + print('Map size: {:5d}x{:5d}'.format(int(dem.shape[0]*scale), int(dem.shape[1]*scale))) print() print('--- Surfaces ---') print('Continents: {:6.2%}'.format(continent_surface/surface)) @@ -100,3 +115,5 @@ def stats(dem, lakes, scale=1): print('Mean continent elev: {:4.0f}'.format((dem*continent).sum()/continent_surface)) print('Lowest elevation: {:4.0f}'.format(dem.min())) print('Highest elevation: {:4.0f}'.format(dem.max())) + print() +