def test_text_input_single_filename(): """ Run text by passing in one filename to textfiles """ fig = Figure() fig.text(region=[10, 70, -5, 10], textfiles=POINTS_DATA) return fig
def test_text_without_text_input(region, projection): """ Run text by passing in x and y, but no text """ fig = Figure() with pytest.raises(GMTInvalidInput): fig.text(region=region, projection=projection, x=1.2, y=2.4)
def test_text_input_remote_filename(): """ Run text by passing in a remote filename to textfiles """ fig = Figure() fig.text(region=[0, 6.5, 0, 6.5], textfiles="@Table_5_11.txt") return fig
def test_text_nonexistent_filename(): """ Run text by passing in a list of filenames with one that does not exist. """ fig = Figure() with pytest.raises(GMTCLibError): fig.text(region=[10, 70, -5, 10], textfiles=[POINTS_DATA, "notexist.txt"])
def test_text_input_multiple_filenames(): """ Run text by passing in multiple filenames to textfiles """ fig = Figure() fig.text(region=[10, 70, -30, 10], textfiles=[POINTS_DATA, CITIES_DATA]) return fig
def test_text_xy_with_position_fails(region): """ Run text by providing both x/y pairs and position arguments. """ fig = Figure() with pytest.raises(GMTInvalidInput): fig.text( region=region, projection="x1c", x=1.2, y=2.4, position="MC", text="text" )
def test_text_no_transparency(transparency): """ Add text with no transparency set. This is a regression test for https://github.com/GenericMappingTools/pygmt/issues/1852. """ fig = Figure() fig.text(region=[10, 70, -5, 10], textfiles=POINTS_DATA, transparency=transparency) return fig
def test_text_position(region): """ Print text at center middle (CM) and eight other positions (Top/Middle/Bottom x Left/Centre/Right). """ fig = Figure() fig.text(region=region, projection="x1c", frame="a", position="CM", text="C M") for position in ("TL", "TC", "TR", "ML", "MR", "BL", "BC", "BR"): fig.text(position=position, text=position) return fig
def test_text_position_offset_with_line(region): """ Print text at centre middle (CM) and eight other positions (Top/Middle/Bottom x Left/Centre/Right), offset by 0.5 cm, with a line drawn from the original to the shifted point. """ fig = Figure() fig.text(region=region, projection="x1c", frame="a", position="CM", text="C M") for position in ("TL", "TC", "TR", "ML", "MR", "BL", "BC", "BR"): fig.text(position=position, text=position, offset="j0.5c+v") return fig
def test_text_multiple_lines_of_text(region, projection): """ Place multiple lines of text at their respective x, y locations """ fig = Figure() fig.text( region=region, projection=projection, x=[1.2, 1.6], y=[0.6, 0.3], text=["This is a line of text", "This is another line of text"], ) return fig
def test_text_single_line_of_text(region, projection): """ Place a single line text of text at some x, y location """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=2.4, text="This is a line of text", ) return fig
def test_text_pen(region, projection): """ Print text with thick green dashed pen """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=1.2, text="green pen around text", pen="thick,green,dashed", ) return fig
def test_text_fill(region, projection): """ Print text with blue color fill """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=1.2, text="blue fill around text", fill="blue", ) return fig
def test_text_font_bold(region, projection): """ Print text with a bold font """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=2.4, text="text in bold", font="Helvetica-Bold", ) return fig
def test_text_angle_30(region, projection): """ Print text at 30 degrees counter-clockwise from horizontal """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=2.4, text="text angle 30 degrees", angle=30, ) return fig
def test_text_varying_transparency(): """ Add texts with varying transparency. """ x = np.arange(1, 10) y = np.arange(11, 20) text = [f"TEXT-{i}-{j}" for i, j in zip(x, y)] transparency = np.arange(10, 100, 10) fig = Figure() fig.basemap(region=[0, 10, 10, 20], projection="X10c", frame=True) fig.text(x=x, y=y, text=text, transparency=transparency) return fig
def test_text_round_clearance(region, projection): """ Print text with round rectangle box clearance """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=1.2, text="clearance around text", clearance="90%+tO", pen="default,black,dashed", ) return fig
def test_text_nonstr_text(): """ Input text is in non-string type (e.g., int, float) """ fig = Figure() fig.text( region=[0, 10, 0, 10], projection="X10c", frame=True, x=[1, 2, 3, 4], y=[1, 2, 3, 4], text=[1, 2, 3.0, 4.0], ) return fig
def test_text_justify_parsed_from_textfile(): """ Print text justified based on a column from textfile, using justify=True boolean operation. Loosely based on "All great-circle paths lead to Rome" gallery example at https://gmt.soest.hawaii.edu/doc/latest/gallery/ex23.html """ fig = Figure() fig.text( region="g", projection="H90/9i", justify=True, textfiles=CITIES_DATA, D="j0.45/0+vred", # draw red-line from xy point to text label (city name) ) return fig
def test_text_transparency(): "Add texts with a constant transparency" x = np.arange(1, 10) y = np.arange(11, 20) text = [f"TEXT-{i}-{j}" for i, j in zip(x, y)] fig_ref, fig_test = Figure(), Figure() # Use single-character arguments for the reference image with GMTTempFile() as tmpfile: np.savetxt(tmpfile.name, np.c_[x, y, text], fmt="%s") fig_ref.basemap(R="0/10/10/20", J="X10c", B="") fig_ref.text(textfiles=tmpfile.name, t=50) fig_test.basemap(region=[0, 10, 10, 20], projection="X10c", frame=True) fig_test.text(x=x, y=y, text=text, transparency=50) return fig_ref, fig_test
def test_text_angle_font_justify_from_textfile(): """ Print text with x, y, angle, font, justify, and text arguments parsed from the textfile. """ fig = Figure() with GMTTempFile(suffix=".txt") as tempfile: with open(tempfile.name, "w") as tmpfile: tmpfile.write("114 0.5 30 22p,Helvetica-Bold,black LM BORNEO") fig.text( region=[113, 117.5, -0.5, 3], projection="M5c", frame="a", textfiles=tempfile.name, angle=True, font=True, justify=True, ) return fig
def test_text_nonstr_text(): "Input text is in non-string type (e.g., int, float)" fig_ref, fig_test = Figure(), Figure() # Use single-character arguments and input files for the reference image with GMTTempFile(suffix=".txt") as tempfile: with open(tempfile.name, "w") as tmpfile: tmpfile.write("1 1 1.0\n2 2 2.0\n3 3 3.0\n4 4 4.0\n") fig_ref.text(R="0/10/0/10", J="X10c", B="", textfiles=tempfile.name) fig_test.text( region=[0, 10, 0, 10], projection="X10c", frame=True, x=[1, 2, 3, 4], y=[1, 2, 3, 4], text=[1, 2, 3.0, 4.0], ) return fig_ref, fig_test
def test_text_justify_bottom_right_and_top_left(region, projection): """ Print text justified at bottom right and top left """ fig = Figure() fig.text( region=region, projection=projection, x=1.2, y=0.2, text="text justified bottom right", justify="BR", ) fig.text( region=region, projection=projection, x=1.2, y=0.2, text="text justified top left", justify="TL", ) return fig
depths = np.loadtxt(mt_fid, usecols=2, dtype=float) makecpt(cmap=mt_cmap, series=[min(depths), max(depths), 1]) mts = fig.meca(mt_fid, scale=mt_scale, convention="mt", component="dc", C=True, verbose=True, L="1p/black") if mt_colorbar: fig.colorbar(position="n.95/.825+w-2c/.45c", frame='af+l"depth [km]"') # Scalebar, need to use config to set the pen thickness of the scale with config(MAP_TICK_PEN_PRIMARY=1.5): fig.basemap(region=region, projection=projection, #frame=["WSne", "gfa"], map_scale=map_scale) # Landmark text fig.text(textfiles=landmarks_fid) # Plot the whole of Alaska as an inset to give context if inset: with fig.inset(position="n0/.75+w5c/4c", margin=0): # Plot the whole of Alaska as the inset fig.coast(region=[-170, -135, 53, 72], projection="L-150/62/63/64/3.5c", land="gray", water="white", shorelines="0p,black", frame=False, resolution="h", area_thresh=100) # !!! THIS DOESNT WORK Put a box in the inset around Northern Alaska rectangle = [region[0], region[2], region[1], region[3]] fig.plot(data=rectangle, style="r+s", pen="1p,red") # Plot the plate coupling / slip rate deficit with a no-label colorbar