1日1新の日々

リマインダ

Pythonのmatplotlibでグラフの間隔を調整する

matplotlibのsubplotやadd_subplotで描いたグラフ.
軸ラベルや軸目盛のフォントを調整すると,隣接するグラフに文字が被ったりする.
間隔を調整する方法を検索したのでメモ.

import matplotlib.pyplot as plt

plt.subplots_adjust(wspace = 1.0, hspace = 1.0)

以上.

pythonで棒グラフを描く

pythonで棒グラフを描こうと思って,必要な要素がいろいろあるんだけど,
要素が散らばっていて,イマイチ検索に時間がかかるので個人的にここにまとめておく.
あとまあ,久々に更新しておきたいっていうのもある.

pyplotを使って,リストを棒グラフ化する.
とりあえず,pandasを使って,データフレーム化しているとする.
以下は例.

# 一部品のピッキング時間の平均と偏差(棒グラフとエラーバー)
if len(one_picking_time_rw) != 0:
     fig = plt.figure(figsize = (GRAPH_WIDTH, GRAPH_HEIGHT))
     ax = fig.add_subplot(1, 1, 1)
     ax.bar(1, one_picking_time_rw_ave, yerr = one_picking_time_rw_std, ecolor = "black", capsize = 20)
     ax.annotate(str(one_picking_time_rw_ave) + "+/-" + str(one_picking_time_rw_std), xy = (1 - 0.3, one_picking_time_rw_ave + one_picking_time_rw_std + 0.3), fontsize = TICKS_FONTSIZE)
     plt.yticks(np.arange(0, PICKING_TIME_MAX + 1, 0.1), fontsize = TICKS_FONTSIZE)
     plt.xticks(range(0, 3, 1), fontsize = TICKS_FONTSIZE)
     plt.grid(which = "major", color = "gray", linestyle  = "--")
     plt.ylabel("Picking Time [s]", fontsize = LABEL_FONTSIZE)
     plt.savefig(OUT_DIR_FLAG + "PNG/" + "picking_time_psd_ave.png", bbox_inches = "tight")
     plt.savefig(OUT_DIR_FLAG + "PDF/" + "picking_time_psd_ave.pdf", bbox_inches = "tight")
     plt.savefig(OUT_DIR_FLAG + "EPS/" + "picking_time_psd_ave.eps", bbox_inches = "tight")
     plt.close()

png出力の結果はこんな感じ.

f:id:masayabonobono:20170904233151p:plain

ax.bar(x, y, yerr, ecolor, capsize)

について,

  • x:棒グラフのx座標位置
  • y:棒グラフのy値
  • yerr:エラーバーの値
  • ecolor:エラーバーの色
  • capsize:エラーバーの端の横棒のサイズ
ax.annotate(str, xy, fontsize)

でグラフ中に文字列を挿入できて,

  • str:挿入する文字列
  • xy:挿入する座標


以上.

参考URLは
matplotlib で棒グラフを描く – Python でデータサイエンス
グラフ中にデータラベル(数値)を挿入する(matplotlib) | mkacky
かな.

pythonのコード規約PEP8に従ったコードを書く

Pythonのコード規約でPEP8ってのがあるらしい.
要は,空白とかインデントとかくらいだけど.

自動でチェックしてくれるツールがあるらしいのでインストール.
なぜかpipではできなかったのでeasy_installでインスト―ル.

easy_install pep8 pytest pytest-pep8

これでインストール完了.
使う際には,コードのあるディレクトリに移動して,

py.test --pep8 yourfile.py

でチェックできる.

ディレクトリ,ファイル,パスを作成する方法

Pythonで,定型ファイルを処理するプログラムを作る際に,毎度ディレクトリの分類を変更したくなる.
実験内容が違うから当然ではあるが.

毎回ディレクトリの存在の調べ方,作成の仕方を調べないといけないのがめんどくさいので,リマインダのために書き残す.

・パスの存在確認
・ファイルの存在確認
ディレクトリの存在確認

import os

os.path.exists(path)

pathの存在を確認する.ファイルもディレクトリも区別しない.返り値はTrue,Falseのブーリアン
以下同様.

os.path.isfile(file_path)
os.path.isdir(dir_path)

次が,パスの作成.

os.makedirs(path)

makedirsは,path中に存在しないディレクトリが存在した場合に,そのディレクトリも一緒に作ってくれる.
要は,そのパスを無理やり作る感じ.
存在するパスを作ろうとするとエラーが返るので,

import os

if os.path.exists(path) == False:
   os.makedirs(path)

ってやってる.

イラレでクリッピングマスクを一括削除する

PPとかでPDF出力し,Illustratorで編集しようとすると,あらゆるところにクリッピングマスクがついている.これを全部削除しないと,Texに載せた時に図の空白部分まで一緒に出力されてしまう.今までは一つずつ選択して解除して削除して選択して解除して削除して,,,,と地道にやっていたが,調べたら一括削除できるそう.

 

1. すべてを選択
2. オブジェクト > クリッピングマスク > 解除
3. 元クリッピングパスを適当に一つ選択する.そいつや他の元クリッピングパスは塗りも色もないオブジェクトのはずだから,選択 > 共通 > 塗りと線
4. del

 

(参照:http://kakiikanikan.blogspot.jp/2013/12/blog-post_9.html

 

IllustratorCS2では3の手順はできなかったので,一括でクリッピングマスクを解除したのちに,一つずつ外枠を削除した.面倒ではあるけど,クリッピングマスクの解除の手間がなくなっただけでも全然違う.調べれば一括削除までできるのかな?

Python3.xをダウングレードしてOpenCV3を導入する

2017/06/21

AnacondaでPython3.6を導入し使用していた.OpenCVpythonで使う必要があったので,調べたところ

conda install --c https://.... opencv

的なコマンドをやれば良いとの情報を得る.が,できない.conflictがあるとの警告.
どうも,opencv3はpython3.5までしか対応していない模様.
そこで,python3.6にOpenCV3を入れるか,pythonを3.5にする方法を検討.

仮想環境という手もあるが,いちいち環境を切り替えるのが面倒なので,Pythonをダウングレートして3.5に戻す方法を検索.

conda install python=3.5

これでバージョンダウン完了.

さらに,

conda install -c menpo opencv3

で,opencv3導入完了.

便利なコマンドでした.