# Construct a 'Bubble Plot' from a matrix

36 views (last 30 days)
Himanshu Saxena on 8 Jun 2021
Commented: Himanshu Saxena on 16 Jul 2021
Hi,
I want to generate a bubble plot of a matrix. Such plots are possibe to make in 'R Studio'. I have attached an example image of the desired plot.
Is there a way to do so in MATLAB?

Adam Danz on 12 Jun 2021
Edited: Adam Danz on 14 Jun 2021
> I want to have a sequence of colors corresponding to the the size of circles.
Assuming an n-by-m matrix r should be plotted such that point r(i,j) should appear at x=i, y=j, use meshgrid to create x and y coordinates and then set x, y, and r to bubbleplot as vectors.
The size of the bubbles is defined by |r|and the colors are based r. That way the size of the bubble shows the strength of the correlation and the color shows the direction. That could be switched around, of course.
% Create correlation matrix r
rng default % for reproducibility
r = rand(5)*2-1;
r(logical(eye(5))) = 1
r = 5×5
1.0000 -0.8049 -0.6848 -0.7162 0.3115 0.8116 1.0000 0.9412 -0.1565 -0.9286 -0.7460 0.0938 1.0000 0.8315 0.6983 0.8268 0.9150 -0.0292 1.0000 0.8680 0.2647 0.9298 0.6006 0.9190 1.0000
% Create x and y coordinates and bubblechart
[x,y] = meshgrid(1:size(r,1), 1:size(r,2));
bubblechart(x(:),y(:),abs(r(:)),r(:))
% Cosmetics
colormap('jet')
grid on
set(gca,'xtick', 1:size(r,2), ...
'ytick', 1:size(r,1), ...
'YDir', 'Reverse'); % typically corr matrices use flipped y axes
xlabel('x index')
ylabel('y index')
cb = colorbar;
ylabel(cb, 'Correlation')
caxis([-1,1]) See comment below to add text labels to each bubble showing the correlation values.
Himanshu Saxena on 16 Jul 2021
Hi, I found my error. The error was due to my own understanding of using meshgrid and size(r,1) command.
In meshgrid(x,y), length(rows) is y and length(columns) is x.
In size(r,1), 1 is for rows and in size(r,2), 2 is for columns.
thanks

Andres on 8 Jun 2021
Hi,
bubblechart
Andres on 12 Jun 2021
Thanks for your reply. Maybe you can give a small example of such a matrix and describe how the bubble plot should look like.