3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Figure のタイトルや軸ラベルに添字が現れちゃう問題(Interpreter の設定)

Last updated at Posted at 2024-04-26

プロット作るとき、文字が下付き(添字)になっちゃって困ったことありませんか?

解決策を 3 つ

  1. _ の前に \ をつけておく
  2. Interpreter プロパティを none に変更
  3. そもそもデフォルト設定を変更

それぞれ紹介します。

デフォルトで Interpreter プロパティが tex になっているため、アンダースコア(_)が添字にさせるコードだと解釈されて文字列が表示されるのが原因です。

figure
plot(rand(10,3),LineWidth=2)
title('MATLAB_Simulink')
xlabel('X_Label_1')
ylabel('Y_Label_1')
legend(["Data_1st","Data_2nd","Data_3rd"])
fontsize(14,'point')
grid on

figure_0.png

_ の前に \ をつけておく

アンダースコアを無効化するわけですね。チョット面倒ですが _ の前に \ をつければそのまま表示されます。

メリットとしては、本当にアンダースコアで添字にしたいものと、そうでないものが混ざっている場合でも気軽に使える点でしょうか。

figure
plot(rand(10,3),LineWidth=2)
title('MATLAB_Simulink_{R2024a}') % 例えばこんな感じ
xlabel('X_Label_1')
ylabel('Y_Label_1')
legend(["Data_1st","Data_2nd","Data_3rd"])
fontsize(14,'point')
grid on

figure_1.png

Interpreter プロパティを none に変更

tex で解釈させるのが問題であれば、設定を変えれば良い。

figure
plot(rand(10,3),LineWidth=2)
title('MATLAB_Simulink',Interpreter='none') % 例えばこんな感じ
xlabel('X_Label_1',Interpreter='none')
ylabel('Y_Label_1',Interpreter='none')
legend(["Data_1st","Data_2nd","Data_3rd"],Interpreter='none')
fontsize(14,'point')
grid on

figure_2.png

デフォルト設定を変更

いちいち Interpreter = 'none' を設定するのが面倒!そんな時はデフォルトで Interpreter = 'none' で機能するようにしちゃえば良いですね。

ささささささささ(@pzt9tmeh)さんもコメントくれています。

こんな感じでグラフィックルートオブジェクトにInterpreterのdefault値を設定したら、都度入れなくてもよくなり快適になりそうです。 pic.twitter.com/RdPM5G9mYF

— ささささささささ (@pzt9tmeh) April 23, 2024

要注意な点としては、軸ラベル、タイトル、軸Tickに入れる文字、それぞれでプロパティが違うところです。↓のように 3 つ設定しておけば大体のケースは大丈夫かなと・・。

set(groot,DefaultTextInterpreter = 'none') 
set(groot,DefaultLegendInterpreter = 'none') % 凡例部分
set(groot,DefaultAxesTickLabelInterpreter = 'none') % 座標軸の tick ラベル

figure
plot(rand(10,3),LineWidth=2)
title('MATLAB_Simulink')
xlabel('X_Label_1')
ylabel('Y_Label_1')
legend(["Data_1st","Data_2nd","Data_3rd"])
fontsize(14,'point')
grid on

figure_3.png

まとめ

デフォルト値を設定する方法が1番楽でしょうか。MATLAB を再起動するとデフォルト値が出荷時のそれ(本当のデフォルト値)に戻ります。

毎回コードに書くのが面倒という場合は startup.m で設定しておくのも手ですが、設定したことを忘れてしまったり、他の人にコードを渡した時に挙動が変わっちゃう可能性がある点は要注意です。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?