Ngoài @yuk câu trả lời, nếu bạn có một huyền thoại rút ra cũng,
hline = findobj(gcf, 'type', 'line');
sẽ trở lại N x 3
dòng (hoặc chính xác hơn - lines plotted + 2x lines in legend
). Tôi sẽ ở đây chỉ xem xét trường hợp khi tất cả các dòng được vẽ cũng có trong truyền thuyết.
Trình tự là lạ: trong trường hợp của 5 dòng (chúng ta hãy lưu ý họ 1 to 5
) âm mưu và truyền thuyết nói thêm, bạn sẽ có
hline:
1 : 5 th line (mistical)
2 : 5 th line (in legend)
3 : 4 th line (mistical)
4 : 4 th line (in legend)
5 : 3 th line (mistical)
6 : 3 th line (in legend)
7 : 2 th line (mistical)
8 : 2 th line (in legend)
9 : 1 th line (mistical)
10: 1 th line (in legend)
11: 5 th line (in plot)
12: 4 th line (in plot)
13: 3 th line (in plot)
14: 2 th line (in plot)
15: 1 th line (in plot)
Là một giải pháp (thứ sáu buổi tối trì hoãn) Tôi làm điều này nhỏ bé:
giải pháp 1: nếu bạn không muốn thiết lập lại truyền thuyết
Phát hiện nếu có một truyền thuyết và bao nhiêu lin es được vẽ:
hline = findobj(gcf, 'type', 'line');
isThereLegend=(~isempty(findobj(gcf,'Type','axes','Tag','legend')))
if(isThereLegend)
nLines=length(hline)/3
else
nLines=length(hline)
end
Đối với mỗi dòng tìm ra xử lý đúng đắn và làm những thứ cho dòng đó (nó cũng sẽ áp dụng cho dòng huyền thoại tương ứng)
for iterLine=1:nLines
mInd=nLines-iterLine+1
if(isThereLegend)
set(hline([(mInd*2-1) (mInd*2) (2*nLines+mInd)]),'LineWidth',iterLine)
else
set(hline(mInd),'LineWidth',iterLine)
end
end
Điều này làm cho mỗi dòng i-th
với width=i
và tại đây bạn có thể thêm thuộc tính tự động thay đổi;
Giải pháp 2: Giữ nó đơn giản
Loại bỏ các truyền thuyết, chăm sóc của các dòng, thiết lập lại truyền thuyết.
legend off
hline = findobj(gcf, 'type', 'line');
nLines=length(hline)
for iterLine=1:nLines
mInd=nLines-iterLine+1
set(hline(mInd),'LineWidth',iterLine)
end
legend show
Điều này có thể không phù hợp với các tình huống khi huyền thoại phải được đặt trong một số nơi speciffic, vv
Cảm ơn bạn rất nhiều! Điều đó làm việc tốt! – aarelovich