ノート/ノート

訪問者数 6373      最終更新 2014-08-04 (月) 16:41:59

Oregano上のPythonで、Webに描画させたい

なお、別のデータ処理用途で、mint上でヒストグラム描画にも使った

matplotlibを使う方法

matplotlibは

matplotlibとは

matplotlibの例題(Examples)

matplotlibのチュートリアル

matplotlibのHowTo と  [[HowToの中のWebアプリサーバーを作る方法:http://matplotlib.org/faq/howto_faq.html#matplotlib-in-a-web-application-server

Cookbook - MatPlotLibをCGI Scriptで使う

matplotlibのインストール(Linux)

Numpyが必要

次にmatplotlibのインストール

で、matplotlibのテスト

>>> import matplotlib
>>> matplotlib.use('Agg')
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
>>> ax = fig.add_subplot(111)
>>> ax.plot([1,2,3])
>>> fig.savefig('test.png')

を実行すると、直線グラフが描けた。

次に、CGIとして動作させたいときのやり方。

matplotlibで日本語を表示する方法

参照

いろいろあるが、基本は、 1)フォントそのものを入れる必要がある。黙っていてVL Gothicフォントが入っているはず。
ここ ...\Python26\Lib\site-packages\matplotlib\mpl-data\fonts\ttf にもコピーがいるという説あり。Linuxではそうでもなさそう。

2)matplotlibのconfigファイルにフォント指定。基本は自前環境 ($HOME)/.matplotlib/matplotlibrc を修正。下記2行をFONTセクションに追加。

font.serif : VL Gothic
font.sans-serif : VL Gothic

3)漢字を表示したいプログラム上で、

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

...  好きなことをやって

x.hist()   " ヒストグラムを生成
plt.title(u"図のタイトル", fontname="VL Gothic", size=10) #ここで漢字用のフォント指定
plt.show()
plt.savefig("filename.png")
plt.clf()

とすればよい。fontname指定を忘れると出ないようだ。デフォルトのフォント指定ができるのかも知れない。

matplotlibで複数の図を1ページに書く方法

参照

で、簡単には、subplotを使うのがよさそうとのこと。具体的には、

list = ["意欲_偏差値", "学びへの意識(%)", "進路総合(%)", "自己理解(%)", 
"6_復習をした", "5_宿題・課題はきちんとやった", "Q35 機会があれば、外国で勉強や仕事をしてみたい"]

for u in list:
    subplot(3, 3, i)   # 画面を3×3に分割、その中のi番目の図をこれから描くぞ
    plt.title(u.decode("utf-8"), fontname="VL Gothic", size=10)
    x[u].hist()
plt.show()  # 全部まとめて表示
plt.savefig("hist.png")
plt.clf()

だと、listが7要素なので3×3のうち7つだけ埋まる。

たくさん図を入れると、図と図の間隔を調整しなければならないことがある。予め

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=0.2, hspace=0.4)

などとすると、横方向の図の間隔を0.2に、縦方向を0.4にしてくれる。

たくさん図を入れると、軸の目盛の文字のフォントが大きすぎることになる。これを修正するのに1つ1つ面倒だという話になるが、デフォルトを変えてしまうことができる。

参照 ⇒ matplotlib の下の方

一時的にデフォルト値を変更する。
一時的に値を変更することもできる。繰り返し操作を行う際などで便利。
スクリプトか対話モードが終了するかデフォルトファイルの再読み込みをするまで有効。
import matplotlib as mpl
mpl.rc('lines', linewidth=2, color='r')

font = {'family' : 'monospace',
        'weight' : 'bold',
        'size'   : 'larger'}

mpl.rc('font', **font) 

実際に使ってみたのは、

font = {'family': 'VL Gothic',
        'size': '9' }
matplotlib.rc('font', **font)

という感じ

GnuPlotへリンクする方法

Gnuplot.py


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-04 (月) 16:41:59 (1175d)