def test_fidshi(self): x = num.linspace(178., 182., 101) y = num.linspace(-17.5, -14.5, 101) z = num.sin((x[num.newaxis, :]-x[0])/(x[-1]-x[0])*2.*math.pi*5) * \ num.sin((y[:, num.newaxis]-y[0])/(y[-1]-y[0])*2.*math.pi*5) * 5000. tile = automap.FloatTile( xmin=x[0], ymin=y[0], dx=x[1] - x[0], dy=y[1] - y[0], data=z) for version in gmtpy.all_installed_gmt_versions(): m = automap.Map( gmtversion=version, lat=-16.5, lon=180., radius=100.*km, width=20., height=20., margins=[2., 2., 2., 4.5], show_grid=True, show_topo=True, show_topo_scale=True, replace_topo_color_only=tile, illuminate=True) m.draw_cities() fname = 'automap_test_fidshi.png' fpath = self.fpath(fname) m.save(fpath) self.compare_with_ref(fname, 0.01, show=False)
def test_basic(self): for version in gmtpy.all_installed_gmt_versions(): width = 8.0 * inch height = 9.0 * inch resolution = 72 gmt = gmtpy.GMT(version=version, config_papersize=(width, height)) gmt.pscoast(X=0, Y=0, R='g', J='E32/30/170/8i', B='10g10', D='c', A=10000, S=(114, 159, 207), G=(233, 185, 110), W='thinnest') gmt.dump('test') gmt.load('test') for oversample in (1, 2): fname = 'gmtpy_test_basic_o%i.png' % oversample fpath = self.fpath(fname) gmt.save(fpath, resolution=resolution, oversample=oversample) self.compare_with_ref(fname, 0.02) img = image.imread(fpath, format='png') self.assertEqual(img.shape, (int(round(resolution * height / inch)), int(round(resolution * width / inch)), 3))
def test_napoli(self): for version in gmtpy.all_installed_gmt_versions(): m = automap.Map( gmtversion=version, lat=40.85, lon=14.27, radius=50.*km, width=20., height=20., margins=[2., 2., 2., 4.5], show_grid=True, show_topo=True, show_topo_scale=True, illuminate=True, custom_cities=[ automap.City( 'Pompeji', 40.7506, 14.4897, population=9000)], comment='This is output from test_napoli!') assert m.have_coastlines() m.draw_cities(include=['Pompeji', 'Capri']) fname = 'automap_test_napoli.png' fpath = self.fpath(fname) m.save(fpath) self.compare_with_ref(fname, 0.01, show=False)
def test_text_box(self): for version in gmtpy.all_installed_gmt_versions(): s = gmtpy.text_box('Hello', gmtversion=version) assert_allclose(s, (25.8, 9.), rtol=0.1) s = gmtpy.text_box('Abc def ghi jkl mno pqr stu vwx yz', gmtversion=version) assert_allclose(s, (179.9, 12.3), rtol=0.01)
def test_simple_density(self): x = num.linspace(0., 2. * math.pi, 50) y = num.linspace(0., 2. * math.pi, 50) x2 = num.tile(x, y.size) y2 = num.repeat(y, x.size) z2 = num.sin(x2) * num.sin(y2) for version in gmtpy.all_installed_gmt_versions(): for method in ['surface', 'triangulate', 'fillcontour']: plot = gmtpy.Simple(gmtversion=version, with_palette=True) plot.density_plot((x2, y2, z2), method=method) fname = 'gmtpy_test_simple_density_%s.png' % method fpath = self.fpath(fname) plot.save(fpath) self.compare_with_ref(fname, 0.02)
def test_simple(self): x = num.linspace(0., 2 * math.pi) y = num.sin(x) y2 = num.cos(x) for version in gmtpy.all_installed_gmt_versions(): for ymode in ['off', 'symmetric', 'min-max', 'min-0', '0-max']: plot = gmtpy.Simple(gmtversion=version, ymode=ymode) plot.plot((x, y), '-W1p,%s' % gmtpy.color('skyblue2')) plot.plot( (x, y2), '-W1p,%s' % gmtpy.color(gmtpy.color_tup('scarletred2'))) plot.text((3., 0.5, 'hello'), size=20.) fname = 'gmtpy_test_simple_%s.png' % ymode fpath = self.fpath(fname) plot.save(fpath) self.compare_with_ref(fname, 0.01, show=False)
def test_basic2(self): for version in gmtpy.all_installed_gmt_versions(): if version.startswith('5'): gmt = gmtpy.GMT(version=version, config={'MAP_FRAME_TYPE': 'fancy'}, eps_mode=True) else: gmt = gmtpy.GMT(version=version, config={'BASEMAP_TYPE': 'fancy'}) layout = gmt.default_layout() widget = layout.get_widget() xax = gmtpy.Ax(label='Lon', mode='min-max') yax = gmtpy.Ax(label='Lat', mode='min-max') scaler = gmtpy.ScaleGuru([([5, 15], [52, 58])], axes=(xax, yax)) par = scaler.get_params() lon0 = (par['xmin'] + par['xmax']) / 2. lat0 = (par['ymin'] + par['ymax']) / 2. sll = '%g/%g' % (lon0, lat0) widget['J'] = '-JM' + sll + '/%(width)gp' widget['J'] = '-JM' + sll + '/%(width)gp' scaler['B'] = \ '-B%(xinc)gg%(xinc)g:%(xlabel)s:' \ '/%(yinc)gg%(yinc)g:%(ylabel)s:WSen' aspect = gmtpy.aspect_for_projection(version, *(widget.J() + scaler.R())) aspect = 1.045 widget.set_aspect(aspect) gmt.pscoast(D='h', W='1p,red', *(widget.JXY() + scaler.R())) gmt.psbasemap(*(widget.JXY() + scaler.BR())) fname = 'gmtpy_test_basic2.png' fpath = self.fpath(fname) gmt.save(fpath, resolution=75, bbox=layout.bbox()) self.compare_with_ref(fname, 0.01, show=False)
def test_layout(self): x = num.linspace(0., math.pi * 6, 1001) y1 = num.sin(x) * 1e-9 y2 = 2.0 * num.cos(x) * 1e-9 xax = gmtpy.Ax(label='Time', unit='s') yax = gmtpy.Ax(label='Amplitude', unit='m', scaled_unit='nm', scaled_unit_factor=1e9, approx_ticks=5, space=0.05) guru = gmtpy.ScaleGuru([(x, y1), (x, y2)], axes=(xax, yax)) for version in gmtpy.all_installed_gmt_versions(): width = 8 * inch height = 3 * inch gmt = gmtpy.GMT(version=version, config_papersize=(width, height)) layout = gmt.default_layout() widget = layout.get_widget() gmt.draw_layout(layout) gmt.psbasemap(*(widget.JXY() + guru.RB(ax_projection=True))) gmt.psxy(in_columns=(x, y1), W='1p,red', *(widget.JXY() + guru.R())) gmt.psxy(in_columns=(x, y2), W='1p,blue', *(widget.JXY() + guru.R())) fname = 'gmtpy_test_layout.png' fpath = self.fpath(fname) gmt.save(fpath) self.compare_with_ref(fname, 0.01)
def test_override_args(self): x = num.array([0, 0.5, 1, 0]) y = num.array([0, 1, 0, 0]) width = 300 height = 100 config_papersize = (width, height) for version in gmtpy.all_installed_gmt_versions(): gmt = gmtpy.GMT(version=version, config_papersize=config_papersize) for i, cutoff in enumerate([30, 90]): gmt.psxy(in_columns=(i * 2 + x, y), W='10p,red', J='X%gp/%gp' % (width, height), X=0, Y=0, R=(-1, 4, -1, 2), config={'PS_MITER_LIMIT': '%i' % cutoff}) fname = 'gmtpy_test_override.png' fpath = self.fpath(fname) gmt.save(fpath) self.compare_with_ref(fname, 0.001, show=False)
def test_grid_layout(self): for version in gmtpy.all_installed_gmt_versions(): gmt = gmtpy.GMT(version=version, config_papersize='a3') nx, ny = 2, 5 grid = gmtpy.GridLayout(nx, ny) layout = gmt.default_layout() layout.set_widget('center', grid) widgets = [] for iy in range(ny): for ix in range(nx): inner = gmtpy.FrameLayout() inner.set_fixed_margins(1. * cm * golden_ratio, 1. * cm * golden_ratio, 1. * cm, 1. * cm) grid.set_widget(ix, iy, inner) inner.set_vertical(0, (iy + 1.)) widgets.append(inner.get_widget('center')) gmt.draw_layout(layout) for widget in widgets: x = num.linspace(0., 10., 5) y = num.sin(x) xax = gmtpy.Ax(approx_ticks=4, snap=True) yax = gmtpy.Ax(approx_ticks=4, snap=True) guru = gmtpy.ScaleGuru([(x, y)], axes=(xax, yax)) gmt.psbasemap(*(widget.JXY() + guru.RB(ax_projection=True))) gmt.psxy(in_columns=(x, y), *(widget.JXY() + guru.R())) fname = 'gmtpy_test_grid_layout.png' fpath = self.fpath(fname) gmt.save(fpath, resolution=75) self.compare_with_ref(fname, 0.01)