プロット作るとき、文字が下付き(添字)になっちゃって困ったことありませんか?
解決策を 3 つ
- _ の前に \ をつけておく
- Interpreter プロパティを none に変更
- そもそもデフォルト設定を変更
それぞれ紹介します。
デフォルトで 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
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
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
デフォルト設定を変更
いちいち 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
まとめ
デフォルト値を設定する方法が1番楽でしょうか。MATLAB を再起動するとデフォルト値が出荷時のそれ(本当のデフォルト値)に戻ります。
毎回コードに書くのが面倒という場合は startup.m で設定しておくのも手ですが、設定したことを忘れてしまったり、他の人にコードを渡した時に挙動が変わっちゃう可能性がある点は要注意です。