タイトルを表示する
前回、matplotlibを使って、グラフを表示する方法を解説しました。
グラフは表示できたのですが、何とも味気ないグラフになっていましたよね。
やはりグラフを表示したら、タイトルやX軸、Y軸の名称、凡例、それぞれの文字のサイズの調整、補助線の表示なんかしたくなりませんか?
今回はグラフをデコレーションする方法です。
まずは前回のおさらいから。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.show()
実行結果
ここにまずはタイトルを追加します。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.title("Test Graph")
plt.show()
実行結果
plt.title(“タイトル名”)でタイトルが追加できました。
ただ残念ながら、日本語は使えないようです。
日本語を使うと、エラーは出ませんが、日本語入力したところが□□□となってしまいます。
フォントサイズが小さいようなので、大きくしてみます。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.title("Test Graph", {"fontsize": 20})
plt.show()
実行結果
plt.title(“タイトル名”, {“fontsize”: X})のXにフォントサイズを入力することで、タイトルの文字の大きさを調整できます。
これでタイトルが、好みのサイズで表示できるようになりました。
X軸名、Y軸名を表示する
次にX軸名、Y軸名を表示してみましょう。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers")
plt.ylabel("Value")
plt.show()
実行結果
plt.xlabel(“X軸名”)でX軸の名称を表示、またplt.ylabel(“Y軸名”)でY軸の名称を表示できます。
こちらもフォントサイズが小さいので、大きくしてみます。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.show()
実行結果
これでX軸名、Y軸名の表示ができました。
ですが、それぞれの軸の数値が小さいので、こちらも大きくしてみましょう。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
plt.plot(x_value, y_value)
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.show()
実行結果
plt.tick_params(labelsize=X)により、軸の数値のサイズを調整することができます。
ですが、グラフが見切れてしまいました。
グラフのサイズの調整をしてみましょう。
グラフサイズの調整をする
グラフサイズを変更するには、最初にサイズを指定します。
%matplotlib notebook
from matplotlib import pyplot as plt
y_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x_value = range(1, len(y_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x_value, y_value)
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.show()
実行結果
fig=plt.figure(figsize=(X,Y))とすることで、グラフの全体のサイズを変更することができます。
これで軸の名称が見切れることが無くなりました。
凡例を表示する
今回はグラフは1つですが、2つ以上のグラフを表示する時、どれがどのデータのグラフなのか区別をつけるため、判例が欲しくなってきます。
せっかくなのでここでデータを変更し、データを二つに増やしてみます。
先ほどのx_value、y_valueをそれぞれx1_value、y1_valueに変えて、y2_valueに100刻みの数値を10個もつリストを作成しました。
x2_valueはx1_valueと同様、1からy2_valueの要素数+1としました。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value)
plt.plot(x2_value, y2_value)
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.show()
実行結果
これに凡例を表示します。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend()
plt.show()
実行結果
凡例を表示するためには、それぞれのグラフの名称を決めてあげなければいけません。
グラフを作成するplt.plot(X, Y)にlabel=”グラフ名”を追加することで、それぞれのグラフの名称を付けることができます。
そして、plt.legend()で凡例を表示することができます。
凡例のサイズを変えるには、plt.legend()の中にprop={“size”: X}を入れ、Xにフォントサイズを入力することで、凡例のサイズを変えることができます。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20})
plt.show()
実行結果
また凡例の場所を変更することも可能です。
その場合には、plt.legend()に、loc=”場所”で指定します。
場所を指定する方法は、文字列で指定する方法と、数値で指定する方法があります。
場所 | 文字列 | 数値 |
自動 | best | 0 |
右上 | upper right | 1 |
左上 | upper left | 2 |
左下 | lower left | 3 |
右下 | lower right | 4 |
右 | right | 5 |
真ん中左 | center left | 6 |
真ん中右 | center right | 7 |
真ん中下 | lower center | 8 |
真ん中上 | upper center | 9 |
真ん中 | center | 10 |
先ほどの凡例は左上だったので、右下に変更してみましょう。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="lower right")
plt.show()
実行結果
これで凡例も自由自在ですね。
グリッド(補助線)を表示する
次にグリッド(補助線)を表示してみましょう。
グリッドを表示するには、plt.grid()を追加するだけです。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="lower right")
plt.grid()
plt.show()
実行結果
X軸だけ、Y軸だけ表示することもできます。
X軸だけ表示するときは、plt.grid(axis=”x”)、Y軸だけ表示するときは、plt.grid(axis=”y”)とします。
まずはX軸だけ補助線を表示してみます。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="lower right")
plt.grid(axis="x")
plt.show()
実行結果
次にY軸だけ補助線を表示してみます。
%matplotlib notebook
from matplotlib import pyplot as plt
y1_value = [1, 2, 4, 8, 16, 32, 64, 128, 256, 1028]
x1_value = range(1, len(y_value)+1)
y2_value = [100, 200, 300, 400, 500, 600, 700, 800, 900, 1000]
x2_value = range(1, len(y2_value)+1)
fig=plt.figure(figsize=(10,6))
plt.plot(x1_value, y1_value, label="test1")
plt.plot(x2_value, y2_value, label="test2")
plt.title("Test Graph", {"fontsize": 20})
plt.xlabel("Numbers", {"fontsize": 20})
plt.ylabel("Value", {"fontsize": 20})
plt.tick_params(labelsize=20)
plt.legend(prop={"size": 20}, loc="lower right")
plt.grid(axis="y")
plt.show()
実行結果
これで大体、全体の見栄えは整いました。
ここまでは2本の折れ線グラフなので、分かりやすいですが、データが増えてくると、何本も折れ線グラフが出てきて、分かりにくくなってきます。
そこで、次は線の変更方法を解説していきます。
ということで今回はこんな感じで。
コメント
コメント一覧 (4件)
はじめまして。
python超初心者で、現在たくさんのCSVファイルをグラフにする作業をしています。
で、色々調べていたらこちらのサイトにたどり着いたのですが、とってもわかりやすいです。
それで教えていただけたらと思うのですが、グラフのタイトルにCSVのファイル名を付けたいのですがどのようにすればよろしいでしょうか?
junneyさん、初めまして!
コメントありがとうございます。また、分かりやすいと言っていただけるのは、本当にうれしいです!
さてご質問頂いた「グラフのタイトルにCSVのファイル名をつける方法」ですが、ちょっと長くなるので記事にしてみました。
記事は明日(2月12日)の朝にアップする予定です。
まずはそちらをご覧いただき、またご質問がありましたら、お気軽にどうぞ。
ただ今回のようにすぐに対応できるとは限りませんので、次回からはのんびりお待ち頂けましたら幸いです。
ではでは今後とも3PySciをよろしくお願いいたします。
3PySci さま
早速のアップにびっくりしました。
本当にありがとうございます。
しかもこまやかでめちゃくちゃわかりやすく勉強になります。
も少し教えていただきたい事があるのですが、
こちらからでいいのでしょうか?
junnyさん、こんばんは。
お役に立てたのでしたら、良かったです!
さてもう少しご質問があると言うことですが、こちらに書いていただいて構いませんよ。
私もプロではないので、分かる範囲でと言う感じにはなってしまいますが、お気軽にどうぞ!
ではではお待ちしております。