Color scale of scatter plot?

108 vues (au cours des 30 derniers jours)
Martina Bonsignore
Martina Bonsignore le 29 Nov 2021
Commenté : Mathieu NOE le 30 Nov 2021
Hi! That's my problem: I have datas like this images, the red dot is a wheater station, the blue dots are lightnings, in the axies there are the lat/lon coordinates.
For each lightning I have associated a value (weight) that decrease from the station (in correspondence of this point there is 1) to the the farthest lightning ( ~0). I need that the colour of the dots changes gradually from dark blue (near the station) to light blue (the farthest lightning).
The matrix of the data is 1480x4 (first column -> datenum of the lightning, second and third columns -> coordinates, fourth column -> weight value of the lightning).
The actual code is:
scatter(longitude_lightnings,latitude_lightnings,6,'filled')
scatter(longitude_station,latitude_station,'filled')
Someone can help me? Thanks!

Réponse acceptée

Mathieu NOE
Mathieu NOE le 29 Nov 2021
hello
A minor variation on the above suggestion
% dummy data
N = 100;
Xc = 5; % center X coordinate
Yc = 5; % center Y coordinate
X = randn(N,1)+Xc;
Y = randn(N,1)+Yc;
dist = sqrt((X-Xc).^2 + (Y-Yc).^2);
[weight,ind] = sort(dist,'ascend');
X = X(ind);
Y = Y(ind);
% light to dark blue colormap
n=256; % number of colors
cmap = [linspace(.9,0,n)', linspace(.9447,.447,n)', linspace(.9741,.741,n)']; % light to dark blue colormap
cmap_inverted = flip(cmap); % now dark to light blue
S = (weight-min(weight))/(max(weight)-min(weight))*(n-1)+1; % map to n colors
scatter(Xc,Yc,'r', 'filled');hold on
scatter(X,Y,[],S, 'filled');hold off
colormap(cmap_inverted)
hcb=colorbar('ver'); % colorbar handle
hcb.FontSize = 12;
hcb.Title.String = "Range";
hcb.Title.FontSize = 15;
  2 commentaires
Martina Bonsignore
Martina Bonsignore le 30 Nov 2021
Thanks a lot! That is perfect
Mathieu NOE
Mathieu NOE le 30 Nov 2021
My pleasure !

Connectez-vous pour commenter.

Plus de réponses (1)

Chunru
Chunru le 29 Nov 2021
x = randn(100, 1);
y = randn(100, 1);
cmap = parula(512);
cmap = cmap(1:360, :); % dark blue to green (360 colors)
pos_station = [0 0];
c = sqrt((x-pos_station(1)).^2 + (y-pos_station(2)).^2);
c = (c-min(c))/(max(c)-min(c))*359+1; % map to 360 colors
scatter(x,y,[],c, 'filled');
colormap(cmap)
colorbar
  1 commentaire
Martina Bonsignore
Martina Bonsignore le 30 Nov 2021
Thanks! :)

Connectez-vous pour commenter.

Catégories

En savoir plus sur Scatter Plots dans Help Center et File Exchange

Produits


Version

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by