\usepackage{bm}
を使うとき、
\newcommand{\vA}{\bm{A}}
と
\bmdefine{\vA}{A}
との違いは一見無さそうだけど、数式内の下付きとかで使うとき、前者は{}でくくらないとエラーが出るが、後者はエラーが出ない。
つまりA_\vAでエラーが出るかどうか。
後者の方が面倒でないけどお作法的には前者の方が{}を忘れないのでいいのかもしれない。(でもやはり面倒い。)
理由は知らない。
図に矢印(メジャーだとベクトル場とか、マイナーなとこでは波数空間のスピンなど)を描きたいことは多い。
その矢印情報を配列に入れて引数で渡せば描画してくれるのがmatplotlibのquiver、凡例を示してくれるのがquiverkey。
これは便利なところもあるけど使い方がわかりにくい上にすぐ忘れるのでメモする。
基本的に情報は公式サイトから仕入れた。公式サイトによると基本的なのは以下15個。これに加えてlinewidthとかも使える(linewidthは矢印の縁取りの指定なので注意)。
quiverの引数には注意点が多い。2個はまったのを書く。
(1) unitsは長さについての引数ではない。その他(太さや頭(head)の調整)に使われる。
公式説明には
The arrow dimensions (except for length) are measured in multiples of this unit.
とある。
(2) 矢印の向きをxy平面のスケールに合わせたいとき、scale_units='xy'とする。
xy平面に合わせるなら'xy'とする。
その上ややこしいのはangles。デフォルトはxy平面の図に関係なくU,Vで決まる方向になる'uv'。
例えば45°方向を向くようにU, Vで指定(1と1とか)すると、デフォルト'uv'のままだとxとy軸で表示スケール比(アスペクト比と言うと良いか)が違ってもとにかく表示上は45°を向く。
でもxy平面に応じた矢印の向きにするには(x, y軸のスケールに合わせたいなら)、angles='xy'で明示する必要がある。('uv'を指定する場合があるのか疑問)
公式説明にあるように、x軸とy軸で同じ単位なら
To plot vectors in the x-y plane, with u and v having the same units as x and y, use angles='xy', scale_units='xy', scale=1.
とすると良さそう。
あるいは矢印の向きを角度指定するならanglesに角度を指定した配列を与えても良いみたい。
(quiverkeyについては後で書く)
Python3.10にアップデートしたついでにAnaconda3にさようならを告げた。Cドライブの容量が3GBくらい増えたので嬉しい。仮想環境とか使っていなかった上に別にPython3.6とか入れてモジュールのアップデートとかぐちゃぐちゃしてたので非常にすっきりした。
matplotlibもインストールし直したので、matplotlibrcも再編集しないと元の表示に戻らない。
図中の文字がボールドになって直せない問題について悩んだことがあったので、再編集で元に戻るか心配だったが、ボールド問題もなく簡単に元に戻せた。
まずmatplotlibの書式設定のファイルの場所は、
import matplotlib
matplotlib.matplotlib_fname()
で確認可能。デフォルトのパスは元のPythonがあるパスからの相対値で
site-packages/matplotlib/mpl-data/matplotlibrc
にあるはず。このファイルを編集すると書式が色々変更できるが、このファイルを開いてみると最初に
## You should find a copy of it on your system at
## site-packages/matplotlib/mpl-data/matplotlibrc (relative to your Python
## installation location). DO NOT EDIT IT!
と書いてある。以下の場所にコピーして編集しなさいということらしい。
## Unix/Linux:
## $HOME/.config/matplotlib/matplotlibrc OR
## $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
## Other platforms:
## $HOME/.matplotlib/matplotlibrc
matplotlib.matplotlib_fname()のコマンドではデフォルトのパスの前に上の移動先のパスを見に行くみたいなので、コピーしたらそっちが優先される。
たぶんだけど、デフォルトの場所にあるmatplotlibrcは全部基本##で2個コメントアウトがあって、ここを直接変更するときには#が1個でも有効になるのではと思う。実際上のコメントを読まずにデフォルトファイルを直接編集していたら”Duplicate key in file WindowsPath ...”と警告が出た。どうやら一つの項目を重複して記述していたみたい。でもコピーしたファイルで全く同じ編集をすると警告は出なかった。
あとはお好みに。コメントアウトの文章はよく読むべきですね。
Jupyter notebookは便利です。でもvim key bindingが実現するともっと便利です。
昨今はVS Codeの拡張機能でそれを実現してしまえという話もあると思いますが、Jupyter notebookのnbextensionsでvimキーバインディングができるようになっておくことも有益でしょう。
そのありがたいextensionの大元はこちらです。インストールのガイダンスは載っていますが、Linuxを想定した書き方なので、初心者かつWindowsユーザーの自分にはつらいです。
そのためPCが変わったときなど未来の自分のためにメモを残します。
これで、Jupyter notebookを立ち上げたときのnbextensionsタブからVIM bindingが選択できるようになるはずです。