I am combining multiple map views onto a single canvas, but it seems that gmt text will cut off text if it goes outside the current plotting map. Here is my example script,
#!/usr/bin/env bash
EQMERIDIAN="0"
# user configurable variables
nrow="2" # number of rows
ncol="3" # number of columns
eqwidth="1.26" # width of equatorial plot in inches
polwidth="0.54" # width of polar plots in inches
dx="0.05" # horizontal buffer in inches
dy="0.1" # vertical buffer in inches
bottom="1" # bottom buffer
# non-user configurable variables
# distance from left edge of north pole plot to left edge of equatorial plot
delta_ne=$(echo "scale=1; ${polwidth}/2" | bc)
# distance between right edge of north pole plot and left edge of south pole plot
delta_pp=$(echo "scale=1; ${eqwidth} + 2*(${delta_ne} - ${polwidth})" | bc)
# width of a single panel (equatorial,north,south plots)
panel_width=$(echo "scale=1; 2*${polwidth} + ${delta_pp}" | bc)
# XXX height of a single panel (equatorial,north,south plots)
panel_height="5"
# y offset between equatorial and polar plots in inches
yoffset="0.47"
pos_str=""
function eqpos {
row="$1"
col="$2"
xpanel=$(echo "scale=1; (${panel_width} + ${dx}) * (${col} - 1)" | bc)
xpos=$(echo "scale=1; ${xpanel} + ${delta_ne}" | bc)
ypanel=$(echo "scale=1; (${panel_height} + ${dy}) * (${row} - 1)" | bc)
ypos=$(echo "scale=1; ${ypanel} + ${yoffset} + ${bottom}" | bc)
pos_str="-Xa${xpos}i -Ya${ypos}i"
}
function nppos {
row="$1"
col="$2"
xpanel=$(echo "scale=1; (${panel_width} + ${dx}) * (${col} - 1)" | bc)
xpos="${xpanel}"
ypanel=$(echo "scale=1; (${panel_height} + ${dy}) * (${row} - 1)" | bc)
ypos=$(echo "scale=1; ${ypanel} + ${bottom}" | bc)
pos_str="-Xa${xpos}i -Ya${ypos}i"
}
function sppos {
row="$1"
col="$2"
xpanel=$(echo "scale=1; (${panel_width} + ${dx}) * (${col} - 1)" | bc)
xpos=$(echo "scale=1; ${xpanel} + ${polwidth} + ${delta_pp}" | bc)
ypanel=$(echo "scale=1; (${panel_height} + ${dy}) * (${row} - 1)" | bc)
ypos=$(echo "scale=1; ${ypanel} + ${bottom}" | bc)
pos_str="-Xa${xpos}i -Ya${ypos}i"
}
gmt set MAP_FRAME_TYPE plain
gmt set MAP_TITLE_OFFSET "-0.1c"
gmt set MAP_FRAME_PEN "0.2p"
MIN_LAT="60"
eq_proj="-JW${EQMERIDIAN}/${eqwidth}i -Rg"
np_proj="-JG0/90/${polwidth}i -R-180/180/${MIN_LAT}/90"
sp_proj="-JG180/-90/${polwidth}i -R/-180/180/-90/-${MIN_LAT}"
gmt set FONT_TITLE "12p,Helvetica,black"
gmt set FONT_LABEL "10p,Helvetica,black"
gmt set FONT_ANNOT_PRIMARY "10p,Helvetica,black"
gmt begin figure png
eqpos 1 1
gmt basemap ${eq_proj} -B0 ${pos_str}
echo "data" | gmt text ${eq_proj} ${pos_str} -F+f8p+cTL -D-0.1c/0
nppos 1 1
gmt basemap ${np_proj} -B0 ${pos_str}
sppos 1 1
gmt basemap ${sp_proj} -B0 ${pos_str}
gmt end show
and here is the result
The script has some machinery to compute the X/Y positions of each panel, but you can see there is plenty of room to print the full “data” string, but part of it gets cut off, I guess because it goes beyond the current Mollweide projection view. Is there a workaround for this?