Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

matplotlibを用いたグラフ描画

More than 5 years have passed since last update.

グラフ描画はよく使うので、個人的に必要最低限のものを作成しました。
基本的なmatplotlibにあるの関数の説明はおそらく、他の方が説明しているので省きます。
import matplotlib.pyplotのインポートは省きます。


plot_graph.py
def plot_graph(x, y=[], graph_name='graph.png', \
    save_flag=True, show_flag=False, label_x='', label_y='', label='',title=''):
    if label: pyplot.plot(x, y, label=label)
    else: pyplot.plot(x, y)
    if title: pyplot.title(title)
    if label_x: pyplot.xlabel(label_x) 
    if label_y: pyplot.ylabel(label_y)
    if save_flag: pyplot.savefig(graph_name)
    if show_flag: pyplot.show()

デフォルト設定として、x, yを引数に与えれば、graph.pngファイルに書き込んでくれる。
x, yは数列入力です。
optionとして、ファイルネーム、保存のするかしないか、showに変更可、各軸ラベル、グラフのラベル、タイトルをいれました。
save_flagshow_flag分けた方がいいと思ったのですが、後で見たときにわかりやすいかと思い分割。

下記にそれぞれ部分的に関数化


plotの部分

plot_only.py
def plot_only(x, y=[], label=''):
    if label: 
        if y: pyplot.plot(x, y, label=label)
        else: pyplot.plot(x, label=label)
    else: 
        if y: pyplot.plot(x, y)
        else: pyplot.plot(x)

ラベル有無、引数が一つの場合の対応


ラベル付けの部分

add_label.py
def add_label(label_x='', label_y='', title=''):
    if title: pyplot.title(title)
    if label_x: pyplot.xlabel(label_x) 
    if label_y: pyplot.ylabel(label_y)

出力の部分

output_graph.py
def output_graph(save_flag=True, show_flag=False, graph_name='graph.png'):
    if save_flag: pyplot.savefig(graph_name)
    if show_flag: pyplot.show()


関数ができたので、plot_graph.pyをスマートに

new_plot_graph.py
def new_plot_graph(x, y=[], graph_name='graph.png', \
    save_flag=True, show_flag=False, label_x='', label_y='', label='',title=''):
    plot_only(x, y, label)
    add_label(label_x, label_y, title)
    output_graph(save_flag, show_flag, graph_name)

legendとか、表示範囲、xtrickとかはあんまり使わないので、今回は書いてません。
こんな感じで、自分的に必要な関数でした。

Kodaira_
python / rails ruby / 自然言語処理(NLP)をやっています
http://cl.sd.tmu.ac.jp/~kodaira/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away