2016-09-18 7 views
2

問題伝説が

写真に示すように、そのボックスの中央に配置されていない私はplotyyを使用して作成したグラフの凡例を中心としていないこと:

enter image description here

これが初めてですこれは私に起こったし、問題はあらゆる形式のformartsにもエクスポートした後にそこに存在し続ける。私はMatlab R2016aを使用しています。私は伝説をプロットするために、次のコードを使用し

コード

a=sprintf('Test') 
b=sprintf('Test.\nTest Test') 
c=sprintf('Test\nTest') 
d=sprintf('TestTest\nTest') 
e=sprintf('Test\nTest') 
f=sprintf('Test\nTest Test') 
hLegend=legend([l1,l2,r1,r2,r3,r4], a, b, c, d, e, f); 
set([gca,hXLabel,hYLabel,hLegend] , 'FontName' , 'Helvetica','FontSize', 8) 
set(hLegend,'Fontsize',8,'Location', 'southoutside', 'Orientation','horizontal') 

そこで質問は、誰もがすでにこの問題を持っていましたか?それを修正する方法はありますか、何か手動で伝説の中心を置くことはできますか?

アン実行可能なコードサンプルは

h=figure 
x=[1:10] 
y=[1:10] 
hold on 
yyaxis left 
l1=plot(x,y) 
l2=plot(x,2*y) 
hYLabel=ylabel('Test') 

yyaxis right 
r1=plot(x,y.^2) 
r2=plot(x,y.^3) 
r3=plot(x,10*y) 
r4=plot(x,20*y) 


hYLabel=ylabel('Test2') 
hXLabel = xlabel('TestTest]'); 
a=sprintf('Test') 
b=sprintf('Test.\nTest Test') 
c=sprintf('Test\nTest') 
d=sprintf('Test\nTest') 
e=sprintf('Test\nTest') 
f=sprintf('TestTest\nTest') 
hLegend=legend([l1,l2,r1,r2,r3,r4], a, b, c, d, e, f); 
set([gca,hXLabel,hYLabel,hLegend] , 'FontName' , 'Helvetica','FontSize', 8) 
set(hLegend,'Fontsize',8,'Location', 'southoutside', 'Orientation','horizontal') 
set(gca,'LineWidth',1.0) 
set(l1, 'LineWidth',1.5,'LineStyle','-') 
set(l2, 'LineWidth',1.5,'LineStyle','-.') 
set(r1, 'LineWidth',1.5,'LineStyle','-') 
set(r2, 'LineWidth',1.5,'LineStyle','-.') 
set(r3, 'LineWidth',1.5) 
set(r4, 'LineWidth',1.5,'LineStyle','- -') 

hold off 

使用された元のデータを表示していないが、私は上記の例を使用して同じ問題を取得します。 ありがとう!

+0

私はエラーメッセージ取得しています:。*未定義の関数や変数「L1を」*あなたは、実行可能なコードサンプルを投稿してくださいできますか? – Rotem

+0

@Rotem私はあなたの答えのコード – KiW

答えて

1

私は、問題はa=sprintf('Test')が1行で、b=sprintf('Test.\nTest Test')のようなものが複数の行であると推測しています。

すべての凡例が2行のテキスト行である場合、テキストは正しく中央揃えされます。

解決方法:a=sprintf('Test')a=sprintf('Test\n\0.')に置き換えてください。
aは、2行目が空白文字のときに2行のテキスト行になります。

enter image description here

+0

ありがとうの実行可能なバージョンを追加しました、それはすでに大きな助けです。最初のラインをラインの中央に配置する方法があるかどうか分かりますか?ここのケースでは、最初の "Test"が少し失われているように見えないので、 – KiW

+0

いいえ、私は拳のラベルの垂直方向の配置を設定する方法を見つけることができませんでした。 – Rotem

+0

注文を置き換える(テストを2番目に置く)、問題を解決する:a = sprintf( 'Test'); hLegend =凡例([l2、l1、r1、r2、r3、r4]、b、a、c 、d、e、f); '(それが受け入れられる場合)。 – Rotem