グラフの凡例をfor文を使って全て反映したい。

조회 수: 32 (최근 30일)
丈太郎 森川
丈太郎 森川 2021년 9월 16일
댓글: 丈太郎 森川 2021년 9월 16일
添付のデータの1列目の文字違いでグラフで色分けし、凡例も反映したいです。
グラフの色分けはfor文を使って下記の要領で分けてできました。
ただ、凡例を反映したいのですが、どうしても最後の文字(C)だけしか反映されません。
添付のデータであれば凡例は'A','B','C'となるようにしたいです。
どのようなコードになるか教えていただけないでしょうか。
よろしくお願いいたします。
Data = readcell("質問用.xlsx")
Lot = Data(:,1)%1列目だけ抜き取り
Data1 = (Data(:,2))%2列目だけ抜き取り
Lot1 = unique(Lot, 'rows')%1列目の文字被りを削除(文字の数を確認するため)
Lot2 = length(Lot1)%文字が何個あるか確認
for c = 1 : Lot2
Lot_{c} = contains(Lot,Lot1{c})%1列目の同じ文字を確認
Lot1_{c} = find(Lot_{c}==1)%1列目の同じ文字の行数を確認
Lot1_first_{c} = Lot1_{c}(1)%1列目の各文字の最初の行数を確認
Lot1_last_{c} = Lot1_{c}(end)%1列目の各文字の最後の行数を確認
plot(Lot1_first_{c}:Lot1_last_{c},cell2mat(Data1(Lot1_first_{c}:Lot1_last_{c})),'.',"MarkerSize",30)
legend()%←添付のデータあれば凡例は'A','B','C'となるようにしたい。
end

채택된 답변

Hernia Baby
Hernia Baby 2021년 9월 16일
table型で読み込んでいます
file = '質問用.xlsx';
Data = readtable(file)
Data = 8×2 table
Var1 Var2 _____ ____ {'A'} 1 {'A'} 2 {'A'} 3 {'B'} 4 {'B'} 5 {'C'} 6 {'C'} 7 {'C'} 8
ここで凡例となる名前を取ります
name = unique(Data.Var1)
name = 3×1 cell array
{'A'} {'B'} {'C'}
プロットします
for i = 1:length(name)
n1 = name{i};
names = string(Data.Var1);
plot(Data.Var2(names==n1),'o-')
hold on
end
legend(name);
  댓글 수: 1
丈太郎 森川
丈太郎 森川 2021년 9월 16일
legend(name)←これで出来ました。ありがとうございました。
今後ともよろしくお願いいたします。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Atsushi Ueno
Atsushi Ueno 2021년 9월 16일
足りないのはhold onです。
% 途中まで省略
hold on;
legend()%←添付のデータあれば凡例は'A','B','C'となるようにしたい。
end

카테고리

Help CenterFile Exchange에서 Legend에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!