My goal is to plot a map using the Earth Relief Grid data and then plot some filled contours in the ocean. Would anyone please help me figure out what I did wrong? My code can only produce a map. The contour did not plot at all. Many thanks!
Below is my code:
using GMT
using MAT
# plot the Earth Relief based map:
grdimage("@earth_relief_10m", region=(180,320,10,80),
proj=(name=:lambertConic, center=[-105 35], parallels=[33 45]),
coast=(coast=true, water=:white), fmt=:jpg, show=true);
# Read data:
F1 = matopen("folder/test.mat");
A = read(F1, "A");
close(F1);
# Create the grid:
lon = 20:0.25:379.75;
lat = -90:0.25:89.75;
G2 = mat2grid(Array(transpose(A)), x=lon, y=lat);
# Create the colorbar
topo = makecpt(cmap=:jet, range=(0,10,0.02) );
# Plot the contour
grdimage!(G2, coast=true, color=topo,frame=(annot=45,grid=45,title="test"))
@Joaquim, I hope you do not mind tagging you on such posts? I certainly do not want you to feel pressured by my tagging. Many thanks for all of your help.
When you use show (or savefig) that is interpreted as closing/finishing the figure.
When you next use grdimage! you are appending on … an empty fig.
One normally do not append two grdimages without using some transparency or having a clip command in the middle. Otherwise second image completely hides the first.
PS. Don’t need to @tagg me, those post are meant to me.
I really want to keep the the Earth Relief data based map, so that one would have to be plotted using grdimage. In this case, what is the best way to solve my issue? I can plot the filled contour using a function other than grdimage?
I tried the below, but it is taking forever to execute: contourf!(G2, topo, show=true)
Filled countours is a very heavy operation. You probably want to do a
grdimage(…)
contour!(…)
also, contourf creats an image so it hides any previous image. I suggest that you look a bit at the GMT examples (including plain GMT figures) and understand better how it works.