How to remove specific colour from "surf" plot?

15 vues (au cours des 30 derniers jours)
Mariana Melo
Mariana Melo le 28 Nov 2019
Commenté : Mariana Melo le 6 Déc 2019
I am trying to generate a density plot overlayed on a background image.
For me it is interesting the points where the density is higher, so I want to remove the blue color, or make it transparent somehow.
This is how i generated this figure. I used "dscatter" function from Mathworks to generate density plot.
figure
img = imread('estimulo_neutro.jpg');
image('CData',img,'XData',[0 1080],'YData',[1900 0])
x = vector0(:,1);
y = vector0(:,2);
hold on
t = dscatter(x, y, 'plottype', 'surf');
colormap(jet)

Réponse acceptée

Daniel M
Daniel M le 28 Nov 2019
I don't have this dscatter function, but here is an example of how to do this with imagesc (which is similar enough that you could translate it to your situation). It involves setting the AlphaData property of your image. In the following example, I do so based on if the value is NaN. But you could do it for any value (and thus any colour).
clearvars
close all
clc
% get some data and plot it
z = peaks;
x = 1:size(z,1);
y = 1:size(z,2);
figure
imagesc(x,y,z);
colorbar
% now make some values in z NaN and plot them blank
nanz = z;
nanz(z < 1 & z > -1) = NaN;
figure
I = imagesc(x,y,nanz);
colorbar
% Use the AlphaData property to set the NaN values to blank
I.AlphaData = ones(size(nanz));
I.AlphaData(isnan(nanz)) = 0;
  1 commentaire
Mariana Melo
Mariana Melo le 6 Déc 2019
It worked perfectly.
Thank you!

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by