def run(title): if title == 'Migration': result = gravmag.imaging.migrate(xp, yp, zp, gz, bounds[-2], bounds[-1], meshshape, power=0.5) elif title == 'Generalized Inverse': result = gravmag.imaging.geninv(xp, yp, zp, gz, meshshape[1:], bounds[-2], bounds[-1], meshshape[0]) elif title == 'Sandwich': result = gravmag.imaging.sandwich(xp, yp, zp, gz, meshshape[1:], bounds[-2], bounds[-1], meshshape[0], power=0.5) # Plot the results myv.figure() myv.polyprisms(prisms, 'density', style='wireframe', linewidth=2) myv.prisms(result, 'density', edges=False) axes = myv.axes(myv.outline(), ranges=[b*0.001 for b in bounds], fmt='%.0f') myv.wall_bottom(axes.axes.bounds) myv.wall_north(axes.axes.bounds) myv.title(title) myv.show()
area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') model = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization':2})] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = polyprism.tf(xp, yp, zp, model, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.m2km() mpl.show() # Show the prisms myv.figure() myv.polyprisms(model, 'magnetization') myv.axes(myv.outline(bounds), ranges=[i*0.001 for i in bounds]) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.show()
area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') model = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization': 2})] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = polyprism.tf(xp, yp, zp, model, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.m2km() mpl.show() # Show the prisms myv.figure() myv.polyprisms(model, 'magnetization') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds]) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.show()
""" Vis: Exaggerate the vertical dimension of 3D plots """ from fatiando.mesher import Prism, PolygonalPrism from fatiando.vis import myv prism = Prism(0, 1000, 0, 1000, 0, 10) poly = PolygonalPrism([[-2000, -2000], [-1000, -1000], [-2000, -1000]], 0, 10) bounds = (-3000, 3000, -3000, 3000, 0, 20) myv.figure() myv.prisms([prism]) myv.polyprisms([poly]) myv.axes(myv.outline(bounds)) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.title('No exaggeration') scale = (1, 1, 50) # Exaggerate 50x the z axis myv.figure() myv.prisms([prism], scale=scale) myv.polyprisms([poly], scale=scale) myv.axes(myv.outline(bounds, scale=scale), ranges=bounds) myv.wall_north(bounds, scale=scale) myv.wall_bottom(bounds, scale=scale) myv.title('50x exaggeration') myv.show()
locations = [[x, y, 1500, {'density': 1000}] for x, y in zip(seedx, seedy)] mpl.show() # Make the seed and set the compactness regularizing parameter mu seeds = harvester.sow(locations, mesh) # Run the inversion estimate, predicted = harvester.harvest(data, seeds, mesh, compactness=0.05, threshold=0.0005) # Put the estimated density values in the mesh mesh.addprop('density', estimate['density']) # Plot the adjustment and the result mpl.figure() mpl.title("True: color | Predicted: contour") mpl.axis('scaled') levels = mpl.contourf(yp, xp, gz, shape, 12) mpl.colorbar() mpl.contour(yp, xp, predicted[0], shape, levels, color='k') mpl.xlabel('Horizontal coordinate y (km)') mpl.ylabel('Horizontal coordinate x (km)') mpl.m2km() mpl.show() # Plot the result myv.figure() myv.polyprisms(model, 'density', opacity=0.6, linewidth=5) myv.prisms(vremove(0, 'density', mesh), 'density') myv.prisms(seeds, 'density') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds], fmt='%.1f', nlabels=6) myv.wall_bottom(bounds) myv.wall_north(bounds) myv.show()
area = bounds[:4] axis = mpl.figure().gca() mpl.axis('scaled') prisms = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization':2})] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = gravmag.polyprism.tf(xp, yp, zp, prisms, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.m2km() mpl.show() # Show the prisms myv.figure() myv.polyprisms(prisms, 'magnetization') myv.axes(myv.outline(bounds), ranges=[i*0.001 for i in bounds]) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.show()
data = [ polyprism.gxx(xp, yp, zp, model), polyprism.gxy(xp, yp, zp, model), polyprism.gxz(xp, yp, zp, model), polyprism.gyy(xp, yp, zp, model), polyprism.gyz(xp, yp, zp, model), polyprism.gzz(xp, yp, zp, model) ] # and plot it titles = ['gxx', 'gxy', 'gxz', 'gyy', 'gyz', 'gzz'] mpl.figure() mpl.axis('scaled') mpl.suptitle("Gravity tensor produced by prism model (Eotvos)") for i in xrange(len(data)): mpl.subplot(3, 2, i + 1) mpl.title(titles[i]) mpl.contourf(yp, xp, data[i], shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.m2km() mpl.show() # Show the prisms myv.figure() myv.polyprisms(model, 'density') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds]) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.show()
estimate, predicted = gm.harvester.harvest(data, seeds, mesh, compactness=0.05, threshold=0.0005) # Put the estimated density values in the mesh mesh.addprop('density', estimate['density']) # Plot the adjustment and the result mpl.figure() mpl.title("True: color | Predicted: contour") mpl.axis('scaled') levels = mpl.contourf(yp, xp, gz, shape, 12) mpl.colorbar() mpl.contour(yp, xp, predicted[0], shape, levels, color='k') mpl.xlabel('Horizontal coordinate y (km)') mpl.ylabel('Horizontal coordinate x (km)') mpl.m2km() mpl.show() # Plot the result myv.figure() myv.polyprisms(model, 'density', opacity=0.6, linewidth=5) myv.prisms(vremove(0, 'density', mesh), 'density') myv.prisms(seeds, 'density') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds], fmt='%.1f', nlabels=6) myv.wall_bottom(bounds) myv.wall_north(bounds) myv.show()
depths = [0, 1000, 2000, 3000, 4000] prisms = [] for i in range(1, len(depths)): axes = mpl.figure().gca() mpl.axis('scaled') for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) prisms.append( mesher.PolygonalPrism( mpl.draw_polygon(area, axes, xy2ne=True), depths[i - 1], depths[i], {'density':500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-1) gz = gravmag.polyprism.gz(xp, yp, zp, prisms) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("gz produced by prism model (mGal)") mpl.contourf(yp, xp, gz, shape, 20) mpl.colorbar() for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.show() # Show the prisms myv.figure() myv.polyprisms(prisms, 'density') myv.axes(myv.outline(bounds), ranges=[i*0.001 for i in bounds]) myv.show()
depths = [0, 1000, 2000, 3000, 4000] model = [] for i in range(1, len(depths)): axes = mpl.figure().gca() mpl.axis('scaled') for p in model: mpl.polygon(p, '.-k', xy2ne=True) model.append( mesher.PolygonalPrism( mpl.draw_polygon(area, axes, xy2ne=True), depths[i - 1], depths[i], {'density':500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-1) gz = polyprism.gz(xp, yp, zp, model) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("gz produced by prism model (mGal)") mpl.contourf(yp, xp, gz, shape, 20) mpl.colorbar() for p in model: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.show() # Show the model myv.figure() myv.polyprisms(model, 'density') myv.axes(myv.outline(bounds), ranges=[i*0.001 for i in bounds]) myv.show()
tesseroid = Tesseroid(10, 20, 50, 60, 10**6, 0) red, green, blue = (1, 0, 0), (0, 1, 0), (0, 0, 1) white, black = (1, 1, 1), (0, 0, 0), myv.figure() # Make the prism red with blue edges, despite its density myv.prisms([prism], 'density', color=red, edgecolor=blue) # and the polyprism green with blue edges myv.title('Body + edge colors') myv.figure() # For wireframes, color is usually set by the density. # Overwrite this by setting *color* # *edgecolor* is ignored myv.polyprisms([polyprism], 'density', style='wireframe', color=green, edgecolor=red, linewidth=2) myv.title('Wireframe colors') # Black background, white lines, green tesseroid myv.figure(zdown=False, color=black) myv.earth() myv.continents(color=white) myv.tesseroids([tesseroid], color=green, edgecolor=white) myv.title('Black background', color=white) myv.show()
area = bounds[:4] depths = [0, 1000, 2000, 3000, 4000] prisms = [] for i in range(1, len(depths)): axes = mpl.figure().gca() mpl.axis('scaled') for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) prisms.append( mesher.PolygonalPrism(mpl.draw_polygon(area, axes, xy2ne=True), depths[i - 1], depths[i], {'density': 500})) # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-1) gz = gravmag.polyprism.gz(xp, yp, zp, prisms) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("gz produced by prism model (mGal)") mpl.contourf(yp, xp, gz, shape, 20) mpl.colorbar() for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.show() # Show the prisms myv.figure() myv.polyprisms(prisms, 'density') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds]) myv.show()
from fatiando.vis import myv prism = Prism(1, 2, 1, 2, 0, 1, {'density': 1}) polyprism = PolygonalPrism([[3, 1], [4, 2], [5, 1]], -1, 2, {'density': 2}) tesseroid = Tesseroid(10, 20, 50, 60, 10 ** 6, 0) red, green, blue = (1, 0, 0), (0, 1, 0), (0, 0, 1) white, black = (1, 1, 1), (0, 0, 0), myv.figure() # Make the prism red with blue edges, despite its density myv.prisms([prism], 'density', color=red, edgecolor=blue) # and the polyprism green with blue edges myv.title('Body + edge colors') myv.figure() # For wireframes, color is usually set by the density. # Overwrite this by setting *color* # *edgecolor* is ignored myv.polyprisms([polyprism], 'density', style='wireframe', color=green, edgecolor=red, linewidth=2) myv.title('Wireframe colors') # Black background, white lines, green tesseroid myv.figure(zdown=False, color=black) myv.earth() myv.continents(color=white) myv.tesseroids([tesseroid], color=green, edgecolor=white) myv.title('Black background', color=white) myv.show()
prisms = [ mesher.PolygonalPrism( mpl.draw_polygon(area, axis, xy2ne=True), # Use only induced magnetization 0, 2000, {'magnetization': 2}) ] # Calculate the effect shape = (100, 100) xp, yp, zp = gridder.regular(area, shape, z=-500) tf = gravmag.polyprism.tf(xp, yp, zp, prisms, inc, dec) # and plot it mpl.figure() mpl.axis('scaled') mpl.title("Total field anomalyproduced by prism model (nT)") mpl.contourf(yp, xp, tf, shape, 20) mpl.colorbar() for p in prisms: mpl.polygon(p, '.-k', xy2ne=True) mpl.set_area(area) mpl.m2km() mpl.show() # Show the prisms myv.figure() myv.polyprisms(prisms, 'magnetization') myv.axes(myv.outline(bounds), ranges=[i * 0.001 for i in bounds]) myv.wall_north(bounds) myv.wall_bottom(bounds) myv.show()