まメモ

みむ

matplotlibのcolormapを自分好みにする

散布図とか描くとき色分けしてプロットすると思うんですけど、ちょっとデフォルトのものから変更したかったので調べてみました。途中から飽きて雑にしか理解してないので話半分に読んでください。

ざっくり説明すると、以下のようにRGB各色について点を0から1の範囲で指定すると線形補間してくれて色が決まるそう。1列目が入力の対応位置、2列目と3列目が実際に取る値になります。y=f(x)とすると1列目がxで2,3列目がyに当たると考えれば。yが2つある理由は後述しますが、取りあえずは同じ値を設定しておけば困らないと思います。

cdict1 = {'red':((0.0,0.5,0.5),
                 (0.25,0.0,0.0),
                 (0.5,1.0,1.0),
                 (0.75,0.0,0.0),
                 (1.0,0.5,0.5)),
          'green':((0.0,0.0,0.0),
                   (1.0,0.0,0.0)),
          'blue':((0.0,0.0,0.0),
                  (1.0,0.0,0.0))}

この場合、緑と青は全域で0、赤の値が最小値から最大値にかけて以下のグラフのように変化します。

f:id:dj_marble:20151118213656p:plain

実際に散布図をプロットしたものが以下になります。

f:id:dj_marble:20151118213742p:plain

さて、2列目と3列目が分かれている理由ですが線形補間を行う際、補間したい点を挟むcdictで定義された2点をa,bとしてa[0]<b[0]とすると、a[2]とb[1]を用いて補間されます。説明下手なので自分でも何言ってるかさっぱりですが、以下のように点を指定すると、

cdict2 = {'red':((0.0,1.0,1.0),
                 (0.5,0.0,1.0),
                 (1.0,0.0,0.0)),
          'green':((0.0,0.0,0.0),
                   (1.0,0.0,0.0)),
          'blue':((0.0,0.0,0.0),
                  (1.0,0.0,0.0))}

赤色の値は下図のように補完されます。

f:id:dj_marble:20151118215841p:plain

散布図を描くとこんな感じ。

f:id:dj_marble:20151118220011p:plain

おわかりいただけただろうか。理解力を総動員していただきたい。

もともと欲しかったのはこんなcolormap。

cdict3 = {'red':((0.0,1.0,1.0),
                 (0.5,0.25,0.25),
                 (1.0,1.0,1.0)),
          'green':((0.0,1.0,1.0),
                   (0.5,0.5,0.5),
                   (0.75,1.0,1.0),
                   (1.0,0.25,0.25)),
          'blue':((0.0,1.0,1.0),
                  (0.5,0.75,0.75),
                  (0.75,0.0,0.0),
                  (1.0,0.0,0.0))}

f:id:dj_marble:20151118220446p:plain

気持ち雨量レーダーっぽいかと思います。そうでもないかとも思います。どんなグラフにすればこうなるか理解力が無くてわからなかったので以下のサイトを使いました。

Custom colormaps for Matlab and Matplotlib - Colormap.org

これそのまま使えばええやんとも思った。以下使用したコード。

Arch linuxにxmonadを導入した

今までWMにはawesomeを使っていたのだけれど、マルチディスプレイ周りの挙動が気に入らなかったのと、じわじわとHaskellを勉強している影響でxmonadに移行した。それで色々メモとして残しておきたかったので久しぶりに筆を執ることに。基本的にArch Wikiを読めばある程度までは動かせるはず。

通知

作業中でもすぐリプライやふぁぼに対応するためにmikutterからの通知を取りこぼすわけにはいかない。awesomeでは標準でnaughtyとかいうのが入っていて特に何をすることもなく使えた気がするのが、xmonadは別で通知サーバーを入れないとダメらしい。Arch Wikiに色々候補が上げられているので適当にそれっぽいものをインストール。

ちなみに色々試した結果、dunstで落ち着いた。

壁紙の設定

デフォルトではあまりに真っ暗な画面が襲いかかってくるので起動できているのかすら確認できない。実際最初は失敗したと勘違いして諦めそうになった。awesomeではテーマを適当にいじれば壁紙を変更できたのが、xmonadではnitrogenなど外部ツールを使って設定するらしい。これでこころぴょんぴょん出来るように。

システムトレイ(xfce4-panelで言う通知エリア)

これもawesomeだと何もする必要がなかったけれど、xmobarはテキストを表示する程度の能力しかない(多分)のでそんな器用なことはできない。うまい方法が見つからなかったのでとりあえずxfce4-panelを使って、透明度を100%にするとそれっぽくなったのでそのまま放置。

gtk3が叛逆を起こす

具体的に言うと、gtk3のアプリケーションだけ周りに異様な空間ができる。gtk3のテーマファイル自体を書き換えたら若干ましになった。/usr/share/themes/にテーマファイルがあるので、使用中のテーマファイルの.window-frameの項目を消し去ったら何とかなる、はず。

他にもあった気がするので思い出したら書き足す。

dokuwikiでバックアップを取ったら生成されるリンクが壊れてた話

完全に備忘録というか、あまりに初歩的すぎて(?)ググっても出てこなかったので。

大学のサークルで情報共有にdokuwikiを用いているのですが、ちょっと色々あって再インストールする羽目になって、元のwikiをディレクトリごとバックアップ取ってデータを新しい方にコピーしたのですが、生成されるページの一部だけリンクが壊れていたんです。

で、結果的に直ったんですが、原因はdokuwikiのドキュメントルートを指定していなかったからでした。明示的に指定しなくても自動で推測してくれるので、元々設定は空欄だったのですが、それがバックアップ側のディレクトリを読みに行ってたのが原因みたいです。