Fill plot with gradient colors

86 vues (au cours des 30 derniers jours)
Sergio Yanez-Pagans
Sergio Yanez-Pagans le 31 Oct 2021
Déplacé(e) : Adam Danz le 20 Août 2023
I'm trying to plot a signal, for example cos(x), with a red gradient colormap for positive values and a blue one for negative values. Something similar to the solution previously discussed in:
I haven't been able to make this work for me, any suggestions?
  2 commentaires
Star Strider
Star Strider le 1 Nov 2021
I posted this Comment responding to a similar Comment in the referenced post.
Sergio Yanez-Pagans
Sergio Yanez-Pagans le 1 Nov 2021
Thanks Strider!

Connectez-vous pour commenter.

Réponse acceptée

Dave B
Dave B le 31 Oct 2021
Modifié(e) : Dave B le 31 Oct 2021
Here's one way to make the patch with the color gradient:
x=linspace(0,4*pi,100);
y=cos(x);
patch([x flip(x)],[y zeros(size(y))],[y zeros(size(y))])
You could use jet or turbo to have blue on the bottom and red on the top:
figure
patch([x flip(x)],[y zeros(size(y))],[y zeros(size(y))])
colormap jet
Or you could mix hot and cool colormaps:
figure
patch([x flip(x)],[y zeros(size(y))],[y zeros(size(y))])
colormap([cool;hot])
Or you could make your own colormap, just plug in red green and blue values that suit you (first column is red, second column is green, third column is blue):
figure
patch([x flip(x)],[y zeros(size(y))],[y zeros(size(y))])
cmap = ones(256,3);
cmap(129:256,2)=linspace(0,1,128);
cmap(129:256,3)=linspace(0,1,128);
cmap(1:128,1)=linspace(1,0,128);
cmap(1:128,2)=linspace(1,0,128);
colormap(cmap);
  1 commentaire
Sergio Yanez-Pagans
Sergio Yanez-Pagans le 1 Nov 2021
Déplacé(e) : Adam Danz le 20 Août 2023
Thank you Dave, that was really useful!
Excellent answer =)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Orange dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by