2017-01-23 7 views
5

凡例に凡例と一緒にグラフィックデータと関連しないテキストが必要です。 (それはOriginLab社で作られた)このような 何か:MATLABプロット凡例に独立したテキストを追加する方法

enter image description here このリンクAdd custom legend without any relation to the graph に続いては、私がplot(NaN,NaN,'display','add info here2', 'linestyle', 'none')を使用して、いくつかのテキストを追加することができます。

enter image description here

どのようにこのインデントを避けるために:しかし、このテキストでのインデントはありますか?凡例に関連付けられていないテキストを凡例と一緒に追加すると、より洗練された方法がありますか?

+1

それは最高の解決策だとは言えませんが、おそらくあなたは何とかそれを見つけることができます:[legtools](https://github.com/StackOverflowMATLABchat/legtools/)。 –

答えて

4

その2番目の出力引数は、内のシンボルとテキストを構成するコンポーネントのすべてのハンドルとしてlegend関数が返されます伝説。したがって、凡例のプレースホルダとして「ダミー」行をプロットし、凡例を作成するときにハンドルの順序を変更して、テキストを必要な場所に配置し、それに応じて凡例オブジェクトを変更することができます。ここでは例です:

x = linspace(0, 2*pi, 100); 
hl = plot(x, [sin(x); cos(x); tan(x); nan(size(x))].');   % Add a line of NaNs 
axis([0 2*pi -4 4]); 
[~, objH] = legend(hl([1 2 4 3]), 'sin', 'cos', 'junk', 'tan'); % Reorder handles 
set(findobj(objH, 'Tag', 'junk'), 'Vis', 'off');   % Make "junk" lines invisible 
pos = get(objH(3), 'Pos');         % Get text box position 
set(objH(3), 'Pos', [0.1 pos(2:3)], 'String', 'also...'); % Stretch box and change text 

enter image description here

+0

答えをありがとうございます。それは私のように見えます。 –

1

は、あなたは、このようにプロットの任意のポイントに任意のテキストを追加することができます。

txt1 = 'some information'; 
text(x1,y1,txt1) 

x1, y1 - 座標を。関数text関数は、異なる特性(色、フォントサイズ、アラインメントなど)をたくさん持っているところで

enter image description here

+1

答えをありがとう。しかし、これは良い解決策ではありません。この状況では、伝説でテキストを調整する必要があります。さらに、私の質問に示されているように、2つのカーブの説明の間にテキストを配置したい場合は問題があります。もちろん私は自分で凡例を作成できます(しかし、私は曲線の色、線種、記号を知っていなければなりませんので、これは難しい作業です)。 –

2

注釈を使用できます。それは完璧ではありませんが、あなたが望むものを得ることはほとんどありません。ここでは例です:

% somthing to plot: 
x = [0:0.1:5; 5:0.1:10].'; 
y = sin(x); 
% plot the real data: 
plot(x,y); 
hold on 
% make some space in the legend: 
Spacing_lines = 3; 
h = plot(nan(size(x,1),Spacing_lines)); 
hold off 
set(h,{'Color'},{'w'}); % clear the dummy lines 
% place the legend: 
hl = legend([{'lable1','lable2'} repmat({''},1,Spacing_lines)]); 
% add your text: 
annotation('textbox',hl.Position,'String',{'Some info';'in 2 lines'},... 
    'VerticalAlignment','Bottom','Edgecolor','none'); 

そして、これからあなたが得る:

txt 2 legend

+0

答えをありがとう。残念なことに、 "gnovice"のソリューションが優れています。 –

+0

@AlexanderKorovin私は同意します:) – EBH

0

私は最も簡単な方法はただ、いくつかのダミー関数を作成し、それをプロットしたが、色=「なし」に設定することだと思う - それは唯一の凡例に表示されますそのように(それがあなたがそれを望むところなら)。

関連する問題