24MATLABのプロットでアノテーションをつけるmatlabMATLABでfigureの中のグラフにアノテーション(矢印)をつける方法を書きます。ほとんど忘備録であり、他にも方法はあるのかもしれません。1.手で張るいきなり何を言うのかと思うでしょうが、大多数の人はこれでしのいでいるのではないでしょうか。Figureをパワポか何かにコピーして、パワポの上で矢印をつける方法です。MATLABのノウハウも不要であり、ある意味、無敵と言えます。やり方がわからず時間もない場合は、ためらわず、これをやることをお勧めします(マジ)。2.まともな方法では、まじめにMATLAB上でアノテーションをつける方法を説明します。MathWorksのドキュメントには、構文は、annotation(lineType,x,y)こうなっています。説明を読んで分かった気になり、スクリプトを書いてみます。サイン波を1周期分描いて、180度の点にアノテーションをつけてみましょう。annotationwrite.mt=0:100;A=sin(2*pi*t/100);%正弦波1周期分figure(1);plot(t,A,'r');これにアノテーションをつけてみます。座標はデフォルトでは正規化されているので、座標の指定は0~1の範囲でなければなりません。0.5]でよいのでしょうか。0.5];%右側が矢印の先annotation('arrow',x,y);矢印がずれます。これは、なぜかというと、figure全体で座標が0~1に割り振られており、グラフを描く領域(Axes)は、その一部であることによります。Axesの座標はどこからどこまでなのでしょうか。これは、下記のようにするとわかります。0.8150このように出力されていると思います。この意味は、こうなります。3.アノテーションの座標を計算するfunctionを作ってみました。以上のようになっていることがわかれば、正しい位置にアノテーションを表示することができるはずです。いちいち計算するのは面倒なので、functionを作成してみました。AxesPos(2);Axesの座標はデフォルトの座標で固定にしています。例として、下図の点にアノテーションをつける場合をやってみます。Ypos];annotation('textarrow',x,y,'String','できた!')このように描画されているかと思います。矢印の形や大きさなどは変えられます。MathWorksのドキュメントを見てください。追記:矢印か、テキストか、それが問題コメントをいただいたので、少し追記します。テキストでアノテーションを入れるのも出来て、前に載せたI2C解析の記事では、テキストでアノテーションを入れています(下図の下の文字部分)。これだと、わりとアバウトな範囲しか示せないですが、ご指摘にあったとおり、矢印がtexで追加できて、グラフ上にドットも打てます。180度';text(t(180),A(180),txt);xlabel('[deg]');ylabel('Amplitude');しかし、もっと混み入った表示をする場合、例えば、下記のような場合、グラフに曲線がプロットされていて(緑色)、なにかイベントが発生したところに矢印でアノテーションを入れる。イベントの種類で矢印の色を変え、さらにイベントの大きさで矢印の長さを変える、というような内容を直感的に図示するとなると、やはり、このような表記になってしまうのでは、と思います。EXPOのデモを動画して、Qiitaに埋め込もうとしたところ、多くの先人が指摘しているように、動画はアップロードもできないことがわかりました。Youtubeだと埋め込みはできないようです。GIFアニメは画質が汚いし。なんのかんので、Twitterに動画をアップロードし、Qiitaにリンクを張ると動画埋め込みができることがわかり、それを採用しました。Twitterで動画をQiita上で公開し、評判はよかったのですが、1つ問題が起こりました。Twitterのアカウントがフォローされてしまったのです。EXPOの動画を先にTwitterに上げてしまえばネタバレするし。(ただ、Qiitaの記事をストックするならQiitaのアカウントが必要だけど持ってないし、Twitterのアカウントは大半の人が持っているので、Twitterにフォローかけてしまうのは理解はできます。公開したときに自分がそこまで計算してなかったわけですね)ということで、お返事は書けませんが、見てはおりますので。以上でMATLABのプロットでアノテーションを終わります。N@Monzo_N某社の中の人。本業はアナログ系ハードウェア技術者です。upLoginユーザーは見つかりませんでした。