MATLAB: I would like to do geobubble plot over Indian landmass. I follow the following link to create the bubble plot:https​://in.math​works.com/​help/matla​b/ref/geob​ubble.html​. I would like to do the same plot over the shape file of world and India.

geobubbleshapefile

stationwisecorrS2 = readtable('station_wisecorr.xlsx');

Best Answer

Hi, refer the code below which plots geobubble over india shape file (use the attached zip file for the .shp files).
clear all; close all; clc;
opts = spreadsheetImportOptions("NumVariables", 7);
% Specify sheet and range
opts.Sheet = "Sheet1";
opts.DataRange = "A3:G10";
% Specify column names and types
opts.VariableNames = ["Latitude", "Longitude", "Location", "R", "MABE", "RMSE", "Correlation"];
opts.SelectedVariableNames = ["Latitude", "Longitude", "Location", "R", "MABE", "RMSE", "Correlation"];
opts.VariableTypes = ["double", "double", "string", "double", "double", "double", "categorical"];
opts = setvaropts(opts, 3, "WhitespaceRule", "preserve");
opts = setvaropts(opts, [3, 7], "EmptyFieldRule", "auto");
% Import the data
stationwisecorr = readtable("C:\Users\skoley\Downloads\station_wisecorr.xlsx", opts, "UseExcel", false);
% Convert to categorical
stationwisecorr.Correlation = categorical(stationwisecorr.Correlation);
% Plot geobubble
han = figure;
gb = geobubble(han,stationwisecorr, 'Latitude', 'Longitude',...
'SizeVariable', 'MABE', 'ColorVariable', 'Correlation',...
'Title', 'Comparison between the two datasets', 'Basemap', 'none');
% Set geolimits
geolimits(gb, [6 40], [65 98]);
% Read the .shp file
S = shaperead('INDIA.shp');
% Plot the map
ax = axes(han, 'Units', 'Normalize', 'Position', get(gb, 'Position'));
mapshow(ax, S);
% set transparency and visibility
alpha(ax, 0.2);
ax.Visible = 'off';
% Set limits
axis(ax, [65 98 6 42.5]);
indiaMap.png
Hope this helps!