1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| import numpy as np import matplotlib.pyplot as plt from matplotlib.colors import LightSource from matplotlib.cbook import get_sample_data
def main(): x, y = np.mgrid[-5:5:0.05, -5:5:0.05] z = 5 * (np.sqrt(x**2 + y**2) + np.sin(x**2 + y**2))
filename = get_sample_data('jacksboro_fault_dem.npz', asfileobj=False) with np.load(filename) as dem: elev = dem['elevation']
fig = compare(z, plt.cm.copper) fig.suptitle('HSV Blending Looks Best with Smooth Surfaces', y=0.95)
fig = compare(elev, plt.cm.gist_earth, ve=0.05) fig.suptitle('Overlay Blending Looks Best with Rough Surfaces', y=0.95)
plt.show()
def compare(z, cmap, ve=1): fig, axs = plt.subplots(ncols=2, nrows=2) for ax in axs.flat: ax.set(xticks=[], yticks=[])
ls = LightSource(azdeg=315, altdeg=45)
axs[0, 0].imshow(z, cmap=cmap) axs[0, 0].set(xlabel='Colormapped Data')
axs[0, 1].imshow(ls.hillshade(z, vert_exag=ve), cmap='gray') axs[0, 1].set(xlabel='Illumination Intensity')
rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='hsv') axs[1, 0].imshow(rgb) axs[1, 0].set(xlabel='Blend Mode: "hsv" (default)')
rgb = ls.shade(z, cmap=cmap, vert_exag=ve, blend_mode='overlay') axs[1, 1].imshow(rgb) axs[1, 1].set(xlabel='Blend Mode: "overlay"')
return fig
if __name__ == '__main__': main()
|