Changing color of point in stem plot based on value

I'm doing a stem plot of one vector in MATLAB. Can I change the color/marking of only the values that are zero in that vector? Right now, the 'points' of zero are only empty spaces in the stem plot.

 採用された回答

Matt Fig
Matt Fig 2011 年 4 月 7 日

1 投票

No, but that doesn't mean you can't get what you want.
t = (-3*pi:.1:3*pi);
y = round(sin(t)*5)/5;
idx = y~=0;
ynz = y(idx);
yz = y(~idx);
h = stem(t(idx),ynz,'fill','--');
hold on
h(2) = stem(t(~idx),yz);
set(get(h(1),'BaseLine'),'LineStyle',':')
set(h(1),'MarkerFaceColor','red')
set(h(2),'MarkerFaceColor','k','Markersize',8)

3 件のコメント

M Brown
M Brown 2011 年 4 月 7 日
Okay great- that's what I want it to look like but how would I do it if the data I plot is just a l by x matrix of numerical values
Matt Fig
Matt Fig 2011 年 4 月 7 日
In the case of a matrix instead of a vector (didn't you say in your OP that you had a vector??), each column is plotted separately. So do:
t = (-3*pi:.1:3*pi).';
y(:,1) = round(sin(t)*5)/5; % A matrix used for the call to STEM.
y(:,2) = round(cos(t)*5)/5;
idx = y~=0;
ynz = y;
ynz(~idx) = nan;
y(idx) = nan;
h{1} = stem(ynz,'fill','--');
hold on
h{2} = stem(y);
set(get(h{1}(1),'BaseLine'),'LineStyle',':')
set(h{1}(1),'MarkerFaceColor','red')
set(h{2}(1),'MarkerFaceColor','c','Markersize',10)
M Brown
M Brown 2011 年 4 月 7 日
Thank you!!!!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLine Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by