Andreas
1
A seemingly simple task, but I’m having trouble making a (custom) CPT.
I want a CPT like this:

What’s the best way to do this?
I’m very happy by some syntax-help; the actual colors I want I can find myself once I know how to do it!
I tried playing with gmt makecpt -E -Ccol1,col2…, but - issues…
Edit: Tweaking a cpt by hand works, but is messy.
Have you looked into the example script (bottom of the page, click the “show” button)?
1 Like
Andreas
3
Thanks @PlanetGus; a kick in the general direction of docs tend to help.
Here’s an example of my script:
gmt begin color-test png
# hand made
cat<<eof > temp.cpt
-6000 #627890 -5000 #627890
-5000 #65a8c2 -4000 #65a8c2
-4000 #4db7cf -3000 #4db7cf
-3000 #87b1c7 -2000 #87b1c7
-2000 #72c3d6 -1000 #72c3d6
-1000 #91d2e4 -500 #91d2e4
-500 #aad6da -300 #aad6da
-300 #94c8a1 -200 #94c8a1
-200 #b3d5ba -100 #b3d5ba
-100 #c5dbcf 0 #c5dbcf
0 #ecc58e 1 #ecc58e
eof
# run through makecpt to get proper cpt (i.g. back- and foreground and NaN)
# pipe through sed to replace B with L to only annotate Lower (not Both) for slice 0 - 1
gmt makecpt -Ctemp.cpt -D -H | sed 's/B$/L/g' > color.cpt
# plot - illustration below uses @earth_relief_02m
gmt grdimage @earth_relief_02m -RSJ -JM20c -Ccolor.cpt -Byafg -Bxafg --GMT_THEME=minimal
# plot colorvar with equal width
gmt colorbar -DJCB -L
gmt end show
# clean up
rm color.cpt temp.cpt
I wish there was a way to output/preserve hex values (as opposed to rgb triplets; they’re a complete pain to type and look at).
Edit: update script and figure.
I kinda like the pastel colour here. If you feel like the RGB display doesn’t render properly the hex values, have you tried the HSV system ?
Andreas
5
Sorry - the colors render just fine. I meant how it looks in the cpt-file!
E.g.
-6000 #627890 -5000 #627890
vs.
-6000 98/120/144 -5000 98/120/144
pwessel
6
Could you explain what the problem is? E.g., the # is assumed to mean a comment on the shell line? Might have to escape or place in single quotes etc?
Andreas
7
No problem - just a subjective opinion that rgb triplets is a hassle to type - nothing else.
Is there any way of getting CPT tables printed with hex codes (instead of rgd or color names)?
Joaquim
8
To help you memorize some (which I can’t because I’m a pure decimal guy)
2 Likes
pwessel
9
Seems like makecpt -F could need one more directive to do hex output - try a feature request.
1 Like
Hex output implemented in #7019.
I have a script to do it easily. I will share it later.
1 Like
Create a continuos CPT
Input:
colores.txt: File with list of colors
Script
# Create string from the colors table
colors=$(cat colores.txt | tr -s "\n\r" "," | sed 's/,$//')
# Count the amount of colors
N=$(wc < colores.txt -l)
N=$(($N + 1)) # Add 1 for a continuos CPT
# Create list of values
gmt math -o0 -T-3/11/$N+n T = > valores.txt
# Crear CPT continuo
gmt makecpt -C$colors -Tvalores.txt -Z > venus.cpt
PS: I edit it. I think that now it is ok.
1 Like