Fill different colors inside countries based on data

Hi, all

By google, I understand the Excel can do such job.
See here
avatar

But I just wonder whether GMT can plot such figure.

Dose someone have interest for plotting it using GMT if possible?

My data looks like:

PEOPLES R CHINA	31436	56.232
USA	5448	9.745
SOUTH KOREA	4607	8.241
ENGLAND	2638	4.719
SAUDI ARABIA	2487	4.449
PAKISTAN	2182	3.903
SPAIN	1909	3.415
AUSTRALIA	1905	3.408
CANADA	1793	3.207
INDIA	1748	3.127
TAIWAN	1633	2.921
JAPAN	1622	2.901
MALAYSIA	1461	2.613
ITALY	1124	2.011
EGYPT	1062	1.900
GERMANY	843	1.508
FRANCE	814	1.456
BRAZIL	694	1.241
SINGAPORE	645	1.154
TURKEY	643	1.150
IRAN	593	1.061
U ARAB EMIRATES	574	1.027
FINLAND	572	1.023
VIETNAM	540	0.966
SWEDEN	462	0.826
MEXICO	440	0.787
SCOTLAND	431	0.771
POLAND	428	0.766
PORTUGAL	408	0.730
DENMARK	407	0.728
QATAR	384	0.687
NORWAY	344	0.615
THAILAND	326	0.583
NETHERLANDS	268	0.479
RUSSIA	263	0.470
BANGLADESH	261	0.467
SOUTH AFRICA	260	0.465
GREECE	257	0.460
CHILE	256	0.458
IRELAND	248	0.444
IRAQ	242	0.433
BELGIUM	239	0.428
CZECH REPUBLIC	228	0.408
INDONESIA	190	0.340
NEW ZEALAND	170	0.304
AUSTRIA	166	0.297
JORDAN	154	0.275
ROMANIA	152	0.272
SWITZERLAND	151	0.270
ECUADOR	143	0.256
TUNISIA	143	0.256
WALES	141	0.252
COLOMBIA	125	0.224
NIGERIA	116	0.207
NORTH IRELAND	111	0.199
MOROCCO	99	0.177
HUNGARY	94	0.168
SLOVENIA	93	0.166
ISRAEL	86	0.154
KUWAIT	82	0.147
CROATIA	79	0.141
ALGERIA	78	0.140
KAZAKHSTAN	78	0.140
YEMEN	78	0.140
OMAN	75	0.134
LEBANON	69	0.123
SLOVAKIA	66	0.118
ESTONIA	60	0.107
LUXEMBOURG	59	0.106
CYPRUS	57	0.102
SERBIA	56	0.100
SYRIA	50	0.089
ETHIOPIA	45	0.080
PALESTINE	40	0.072
ICELAND	39	0.070
SRI LANKA	34	0.061
LITHUANIA	26	0.047
ARGENTINA	24	0.043
BULGARIA	21	0.038
SUDAN	21	0.038
BOSNIA HERCEG	20	0.036
GHANA	20	0.036
CUBA	19	0.034
LIBYA	19	0.034
BOTSWANA	17	0.030
PERU	17	0.030
UKRAINE	17	0.030
MALTA	16	0.029
NORTH MACEDONIA	16	0.029
PHILIPPINES	15	0.027
TANZANIA	13	0.023
BRUNEI	12	0.021
COSTA RICA	10	0.018
LATVIA	10	0.018
VENEZUELA	10	0.018
CAMEROON	9	0.016
FIJI	9	0.016
PARAGUAY	8	0.014
MONTENEGRO	7	0.013
RWANDA	7	0.013
UGANDA	7	0.013
MYANMAR	6	0.011
NEPAL	6	0.011
ZAMBIA	6	0.011
KENYA	5	0.009
KYRGYZSTAN	5	0.009
MACEDONIA	5	0.009
PANAMA	5	0.009
BAHRAIN	4	0.007
TAJIKISTAN	4	0.007
AFGHANISTAN	3	0.005
AZERBAIJAN	3	0.005
BELARUS	3	0.005
BURUNDI	3	0.005
CAMBODIA	3	0.005
GUATEMALA	3	0.005
MONGOLIA	3	0.005
SENEGAL	3	0.005
DOMINICAN REP	2	0.004
EL SALVADOR	2	0.004
HONDURAS	2	0.004
LIECHTENSTEIN	2	0.004
MALI	2	0.004
MAURITIUS	2	0.004
NAMIBIA	2	0.004
NORTH KOREA	2	0.004
ALBANIA	1	0.002
ARMENIA	1	0.002
BENIN	1	0.002
BHUTAN	1	0.002
COTE IVOIRE	1	0.002
DEM REP CONGO	1	0.002
ESWATINI	1	0.002
FAROE ISLANDS	1	0.002
GAMBIA	1	0.002
GEORGIA	1	0.002
KOSOVO	1	0.002
LESOTHO	1	0.002
MALAWI	1	0.002
MALDIVES	1	0.002
MOZAMBIQUE	1	0.002
NEW CALEDONIA	1	0.002
PAPUA N GUINEA	1	0.002
REP CONGO	1	0.002
SOMALIA	1	0.002
TIMOR LESTE	1	0.002
TRINIDAD TOBAGO	1	0.002
ZIMBABWE	1	0.002
gmt coast -Rd -W -JW12c -EUS+gblue -ESE+gdarkblue -ERU+gyellow -EBR+gorange -png filled-countries

Thanks.
But how to define the color by data?

You want a choropleth map, which is not a trivial thing to do in GMT. Unless you use the Julia wrapper.

Looks great! I love your work.
Seems I should try to learn Julia GMT.

Maybe a nice addition to coast would be to add an -l option, e.g. to allow painted countries to be in the legend.

for loop ?

cat << 'EOF' > cntries.txt
FR	blue
US	red
AU	brown
BR	hotpink
IN	orange
SD	antiquewhite2
EOF

gmt begin test png
	gmt coast -Rg -JQ0/0/10c -Wfaint -B -Ggray -N1
	for i in {1..14};
	do
	a=$(awk -v var=$i 'NR==var {print $1}' cntries.txt)
	b=$(awk -v var=$i 'NR==var {print $2}' cntries.txt)
	gmt coast -E${a}+g${b}
	done

gmt end show

rm -f cntries.txt 
1 Like