1.15.2022

matplotlibrcの編集について

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 ...”と警告が出た。どうやら一つの項目を重複して記述していたみたい。でもコピーしたファイルで全く同じ編集をすると警告は出なかった。

あとはお好みに。コメントアウトの文章はよく読むべきですね。

1.14.2022

Jupyter notebookにvimキーバインディングを導入する方法 (Windows)

Jupyter notebookは便利です。でもvim key bindingが実現するともっと便利です。

昨今はVS Codeの拡張機能でそれを実現してしまえという話もあると思いますが、Jupyter notebookのnbextensionsでvimキーバインディングができるようになっておくことも有益でしょう。

そのありがたいextensionの大元はこちらです。インストールのガイダンスは載っていますが、Linuxを想定した書き方なので、初心者かつWindowsユーザーの自分にはつらいです。

そのためPCが変わったときなど未来の自分のためにメモを残します。

  1. まずnbextensionsをpipでインストールする。詳細はぐぐってください。
    pip install jupyter_contrib_nbextensions
  2. LinuxでいうところのhomeのWindows版は”C:\Users\***”です。この下に.jupyterというフォルダができているはずです。その下にnbextensionsというフォルダを作ります。
    (2022/8/12)
    これは間違いでした。というよりjupyterが参照するフォルダを"jupyter_data_dir()"で確認したらたぶんデフォルトはここじゃなくて、
    \user\AppData\Roaming\jupyter\
    なので、ここにnbextensionsフォルダが入っているはず。以下このフォルダについて述べていると思ってください。
  3. 上記と同じリンクからZipファイルで丸ごとダウンロードしてきます(右上の”Code"ボタンから可能)。
  4. (2022/8/12)
    コマンドラインで
    jupyter contrib nbextension install --user
    としてnbextensionをインストールする必要があると記事で読んだのでこれを実行。本当に必要があるかどうかは不明。nbextensionsにたくさん項目が増えたけど、vimだけでいい場合はこれいらないのでは?

    zipファイルを解凍してnbextensionsフォルダに置けば完了(フォルダ名はたぶん任意)。

これで、Jupyter notebookを立ち上げたときのnbextensionsタブからVIM bindingが選択できるようになるはずです。

7.13.2021

matplotlibで3D表示のモジュールとオブジェクト生成時の引数

matplotlibで3Dの図を描くときのおまじないをよく忘れるのでメモする。

まず以下をimportする。

  • from mpl_toolkits.mplot3d import Axes3D
次に必要な作図のオブジェクト生成については色々やり方があると思うが、自分は1行でfig, axが得られるplt.subplots()が好き。これを使うときは引数subplot_kwで3次元であることを伝える。
  • fig, ax = plt.subplots(1, figsize=(8,8), subplot_kw={'projection':'3d'})
これで
 ax.scatter()
が3次元でできたり、見る角度を
 ax.view_init(elev=***, azim=***)
で変更できたり、3次元でやりたいことができる。

10.17.2020

vimのエンコードの問題

GVimでエンコードをcp932からutf-8に変更した。Windows10で。

gvimrcファイルとか_vimrcファイルで、

set enc=utf-8

set fenc=utf-8

とした。そうしたら起動するたび、終了するたびにviminfoのエラーで怒られた。

「viminfo: 不正な先頭文字です」

と言われる。C:\Users\[user name]\の下に_viminfoファイルがあって、それがエンコードを変えたときにたぶん変な文字になっちゃって、認識不可になったのだと思う。

この_viminfoにはレジスタとか検索とかコマンドの履歴が残っているので、意外と重要と思うけどそれがパアになってもいいならこのファイルをとにかく削除してもエラーはでなくなる。Vimを終了するとまた新しいのが生成される。

元の_viminfoを残しておくには、エラー元の部分を探して削除することが必要。でもエンコードを変えると元のファイルは文字化けしたままになるかも?別ファイルをVimで開いたときに:regとか参照はちゃんとできるみたい。文字化けするときはlatin1とかよく分からないエンコードになっていることがあって、これはエンコード認識に失敗したからということらしい(https://www-creators.com/archives/1486)。

エンコードは:set fencで確認できる(https://l-w-i.net/t/vim/encode_001.txt)。別のエンコードで開きたいときは

:e ++enc=[encoding]

とする。encodingにはutf-8, cp932, sjis, など。

utf-8にめでたくできても、日本語の場合Vimのメニューとかが文字化けしちゃう。これはhttp://sea-mountain.hatenablog.jp/entry/20100906/1283792259を参考にして、

source $VIMRUNTIME/delmenu.vim
set langmenu=ja_jp.utf-8
source $VIMRUNTIME/menu.vim

を_vimrcとか設定のファイルに書けば直る。すごい。


juliaファイル.jlをvimで編集するjulia-vim

juliaを勉強し始めた。

vimで編集したいので、調べたらjulia-vimというのがある。

vimにプラグインとしてインストールできた。

julia-vimのインストールのため、プラグインマネージャを使う必要があるみたい(自分はVundleを使った)。

詰まったところがあるので備忘録。自分はWindows10に入れた。

  1. まずgitをインストール
    以下のサイトを参考にした。
    https://eng-entrance.com/git-install
  2. Vundleのセットアップ(インストール?)
    https://github.com/VundleVim/Vundle.vim
    上記のページのとおり、gitを使って

    git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim

    とする。git bashのコンソールでいける。
  3. _vimrcファイルに追加
    Program filesに入っているvimのフォルダの_vimrcファイルにテキストを追加する。
    https://github.com/VundleVim/Vundle.vim/wiki/Vundle-for-Windows
    これの「Modern Windows Gvim Install」のセクションに書いてある20行ぐらいのやつ。
    filetype off
    set shellslash
    set rtp+=~/vimfiles/bundle/Vundle.vim
    call vundle#begin('~/vimfiles/bundle')
    " let Vundle manage Vundle, required
    Plugin 'VundleVim/Vundle.vim'
    
    " All of your Plugins must be added before the following line
    call vundle#end()            " required
    filetype plugin indent on    " required
    " To ignore plugin indent changes, instead use:
    "filetype plugin on
    "
    " Brief help
    " :PluginList       - lists configured plugins
    " :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
    " :PluginSearch foo - searches for foo; append `!` to refresh local cache
    " :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
    "
    " see :h vundle for more details or wiki for FAQ
    " Put your non-Plugin stuff after this line
  4. julia-vimをプラグインとしてインストール
    https://github.com/JuliaEditorSupport/julia-vim/blob/master/INSTALL.md
    このページを参考に。下の1行を_vimrcに追加する。ただし、上のVundleの追加文章のコメントアウトにある通り、call vundle#end()の前に追加する。後に追加すると動かない。
    Plugin 'JuliaEditorSupport/julia-vim'

最後にvim上で:PluginInstall!して完了。快適になるかな?

7.15.2019

matplotlibでグラフ上のフォントのボールドを変更できない問題

matplotlib.pyplotを使っていると、軸タイトルとかレジェンドがボールドに勝手になる上にmatplotlibrcでフォントを指定しても直らないデッドロックに陥った。以下にその解決方法とmathtextの変更方法等を記す。

1. ボールド解除方法


色々調べた結果以下のサイトが参考になった。



要するに、

import matplotlib.font_manager as font_manager

をインポートしてから、

del font_manager.weight_dict['roman']
font_manager._rebuild()

で勝手にボールドが選択されている状態を解除する。その後は、

font = font_manager.FontProperties()
font.set_family('serif')
font.set_name('Times New Roman')
font.set_weight('light')

とか書いて自由にいじれば良い。デフォルト設定を変更したい場合やmathtextを使いたい場合とかはmatplotlibrcを編集すれば良い。


2. mathtextのフォント変更方法

mathtextに関連して、Times系のフォントにするための方法は
http://satemochi.blog.fc2.com/blog-entry-56.html
を参照。ざっと言うと2つ方法があって、

texuse : false
font.family : serif
font.serif : Times New Roman
mathtext.rm : serif
mathtext.it : serif:italic
mathtext.bf : serif:bold
mathtext.fontset : cm

などをmatplotlibrcに記入する(お好みで)、もしくは、

from matplotlib import rc
def draw():
    rc('mathtext', **{'rm': 'serif',
                      'it': 'serif:itelic',
                      'bf': 'serif:bold',
                      'fontset': 'cm'})

を書いて適当な場所で呼び出せば良いとのこと。

(追記)
ベクトルなどボールドかつイタリックにしたいときがあるが出来ない。
mathbfでは立体のボールドになる。
stackoverflowに同様の悩みがあったので真似てSTIXではなくてcm (computer modern)でやったけどだめだった。あるいはmatplotlibrcで

mathtext.bf: italic:bold

としたら良さそうだけどやっぱり立体のまま。いい方法ないかな。

(追記の追記)
いい方法があったので新しく記事を書いた。)

3. 編集すべきmatplotlibの場所の調べ方

最後の注意点としては、matplotlibrcは色々な場所に出現しうるので、現状のコード上でどのファイルを参照しているかどうかを調べる必要があること。そのためには、

import matplotlib
matplotlib.matplotlib_fname()

として返り値を見れば良い。jupyter notebookを使っていればそのまま結果が出るはず。

1.09.2018

モロッコ旅行の両替・支払い・通信メモ

モロッコを旅したので旅行するうえで必要な両替・支払い・通信の備忘録。

まず両替に関して、ディルハムDHは現地で調達できた。地球の歩き方には例えばマラケシュやフェズの大手銀行でも両替は可能と書いてあるが、銀行員の作業が遅くて待たされるのでおすすめしない(現地の住民もたくさん待たされていた)。なので両替専門店がいいと思う。
今回の旅の中でレートが最もよかったのは、カサブランカのムハンマド5世空港(CMN)内の荷物受け取り後の出口直前にある「BANQUE POPULAIRE」ていう両替所。100円で8.071DH。
両替所に関して記述すべき点は、メディナのスークの有名どころ(フェズ、マラケシュ等)には両替所が点在しているからスーク探索前に両替を焦る必要はないということ。

またクレジットカードに関しては、地球の歩き方にはVISAとMASTERは使用可能と結構書いてあるが意外と使えない。 最悪現金払いしないといけないことを念頭に歩き回った方が良い。

ついでにもう一つ地球の歩き方の記述と違う点を言うと、WIFIがモロッコのホテルでは整備されているという記述が多いが、結構使えない。特にロビーは良いが部屋に入ると使えない場合が多い。あまりあてにしない方が良いと思う。 そうなるとSIMカードの現地調達をしたくなるが、APN設定がややこしいので携帯ショップで設定してもらうことをおすすめする。 観光客向けに路上で配るようにSIMカードを売っている姿を見かけるが、設定までしてもらえるかは不明なので、お店に行く方がいいと思う。