Color gradient fill for figures

I share with you a script with 9 color gradient fill that can be used to fill figures (as can be seen in the last subplot). I create a continuous CPT from white to gray and then I used it to paint different 2d surfaces created with grdmath.

#!/usr/bin/env bash

	title=Color_Gradient_Fill
	GRD=temp_$title.nc

#	-----------------------------------------------------------------------------------------------------------
gmt begin $title png

	gmt makecpt -Cwhite,50 -T0/1 -Z

	gmt subplot begin 3x3 -Fs15c/0 -M0.1c -R0/1/0/1 -JX6c -B0wesn -A+jTR+gwhite+p1p+o0.2c/0.2c

#	-----------------------------------
	gmt subplot set 0 -A"Y"

#	Crear Imagen a partir de grilla con sombreado
	gmt grdmath -I0.01 Y = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 1 -A"X"

	gmt grdmath -I0.01 X = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 2 -A"X \327 Y"

	gmt grdmath -I0.01 X Y MUL = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 3 -A"X + Y"

	gmt grdmath -I0.01 X Y ADD NORM = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 4 -A"X + Y rotated 90 \260"

	gmt grdmath -I0.01 X Y ADD NORM = $GRD
	gmt grdedit $GRD -Er
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 5 -A"Circle CM"

	gmt grdmath -I0.01 0.5 0.5 CDIST NORM = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 6 -A"Circle CM Inverted"

	gmt grdmath -I0.01 0.5 0.5 CDIST NORM NEG 1 ADD = $GRD
	gmt grdimage $GRD -C	
#	-----------------------------------
	gmt subplot set 7 -A"Circle RT"

	gmt grdmath -I0.01 1 1 CDIST NORM = $GRD
	gmt grdimage $GRD -C
#	-----------------------------------
	gmt subplot set 8 -A"Circle RB"

	gmt grdmath -I0.01 1 0 CDIST NORM = $GRD
	gmt grdimage $GRD -C

	gmt histogram -Bxaf -Byaf @v3206_06.txt -R-6000/0/0/30 -Gorange -W1p -Z1 -T250
#	-----------------------------------
	gmt subplot end
gmt end

	rm temp_*
4 Likes

Art of sciences :smiley:

1 Like

Dayum !

#!/bin/bash

gmt begin test png
    # generate a simple sinusoïd
	vecsta=$(gmt math -Q -1 PI MUL =)
	vecsto=$(gmt math -Q 1 PI MUL =)
	vecste=$(gmt math -Q 1 32 DIV =)
	gmt math -T$vecsta/$vecsto/$vecste T -C1 SIN = sin.txt

    # use @Esteban82's magic
	gmt grdmath -R-3.5/3.5/-1.5/1.5 -I0.01 Y = grd.nc
	gmt grdmath -R-3.2/3.2/-3.2/3.2 -I0.1 X Y ADD NORM = grd_out.nc
	gmt grdedit grd_out.nc -Er

    # define outside/inside colours
	gmt makecpt -Cgeo -T-3/3 -H > color_fg.cpt
	gmt makecpt -Cseafloor -I -T0/1 -H > color_bg.cpt

    # fill outside using inversed clip of function (forces a closed polygon similar to plot -L)
	gmt clip sin.txt -N 
		gmt grdimage grd_out.nc -Ccolor_bg.cpt -t25 
	gmt clip -C
    # fill inside using clip
	gmt clip sin.txt 
		gmt grdimage grd.nc -Ccolor_fg.cpt -t25
	gmt clip -C
    # redraw function for nicer result
	gmt plot sin.txt -Wthick,black 

gmt end show

This is kind of neat :grin:

1 Like