GenericMappingTools / gmt

The Generic Mapping Tools
https://www.generic-mapping-tools.org
Other
847 stars 355 forks source link

inset -R -J -X -Y history #6288

Open gd-a opened 2 years ago

gd-a commented 2 years ago

Not sure it is a bug but it seems that inset doesn't retain history within its block. Is it on purpose ?

Guillaume

gd-a commented 2 years ago

... nevermind ... sorry

gd-a commented 2 years ago

Ok ... I've retried ... it does conserve -X -Y but neither -R or -J

 gmt inset begin -DjBR+w3.5c+o0.25c/0.25c
        gmt coast -Rg -JG0/0/3c+w45 -Dc -Ggray -A5000 -Bg -Wfaint -X0.25 -Y0.25
            gmt plot  <<- EOF
> delta-line -Wthin,black -Am
0 -89
0 89
EOF
    gmt inset end
PaulWessel commented 2 years ago

It should retain -R -J once set inside the inset box. Could you help by supplying a full test script?

gd-a commented 2 years ago
gmt begin test png
gmt basemap -R0/1/0/1 -JX10c -B
gmt inset begin -DjBR+w3.5c+o0.25c/0.25c
                gmt coast -Rg -JG0/0/3c+w45 -Dc -Ggray -A5000 -Bg -Wfaint -X0.25 -Y0.25
                gmt plot  <<- EOF
> delta-line -Wthin,black -Am
0 -89
0 89
EOF
    gmt inset end
gmt end show

If I interpret correctly the black line placement, it seems that -JG0/0/3c is not respected (it takes 3.5c)

PaulWessel commented 2 years ago

I think for gmt inset you have to stick with the rules for the inset:

  1. The projection should be given with ? as the scale or width
  2. Use -M if you want to remove some of the inset space for margin padding

A successful script based on what you have above does not use -X -Y at all and looks like this:

gmt begin test png
    gmt basemap -R0/1/0/1 -JX10c -B
    gmt inset begin -DjBR+w3.5c+o0.25c/0.25c -F+pfaint -M0.25c
        gmt coast -Rg -JG0/0/?+w45 -Dc -Ggray -A5000 -Bg -Wfaint
        gmt plot  <<- EOF
        > delta-line -Wthin,black -Am
        0 -89
        0 89
        EOF
    gmt inset end
gmt end show

Yet there are clearly documentation issues here, so I am not quite sure what is the best way forward here. Here are a bunch of concerns or issues.

  1. Because the user cannot easily know what map projection scale/width to use in the inset, we intended this to be a free parameter, signified with ?. However, I also played (later) with the idea of simply leaving it off (-JG0/0/+w45) but that is not tolerant (yet) of the trailing modifier. So for this projection, ? works, for other projections without a modifier you can leave it off. Not consistent.
  2. We have some inset tests that fails to use ? and specifies the projection width (that match the inset width). Lame.
  3. Our inset man page example uses the "skip the arg" format.
  4. The size of the inset is eaten away by the amounts specified in -M. In contrast, for subplots this is done via -C since in subplot, -M is used for the margins between panels, not space inside them. We should fix this in inset.

My proposal is this:

gd-a commented 2 years ago

So I would have to use something else than inset in my case. The red arrow in here can not, to the best of my knowledge, be plotted outside the geographic boundaries without -X, -Y (and eventually the projection change)

PaulWessel commented 2 years ago

I am not completely done with this issue yet, but the intent is that you should be able to use -X -Y on commands inside your inset begin/end clause, but not with inset itself. There may be issues related to this as well but that is for the next steps. The key issue here is that gmt inset itself was never meant to take -X -Y.

maxrjones commented 2 years ago

There's an issue with ex44.sh after the recent inset changes. It's odd because the script does not use -X or -Y, but here are the error messages:

bash ex44.sh 
inset [ERROR]: Unrecognized option -X
inset [ERROR]: Unrecognized option -Y
inset [ERROR]: Unrecognized option -X
inset [ERROR]: Unrecognized option -Y
inset [ERROR]: Unrecognized option -X
inset [ERROR]: Unrecognized option -Y
inset [ERROR]: Unrecognized option -X
inset [ERROR]: Unrecognized option -Y
PaulWessel commented 2 years ago

Thanks, I will look at it later today or the weekend (busy day for other matters)

gd-a commented 2 years ago

Thanks @PaulWessel, good luck ! (in the meantime I've bodged my code to circumvent the issue)