pythonでpandasのグラフ作成(csv、複数作成、色・線種・凡例の設定)

今回は、pandas読み込んだcsvなどのデータをグラフ化する方法と、グラフの見た目の整え方について解説します。

いろいろデータを集めてpandasで整理したから、
グラフを作って可視化したいな~。

キユ

じゃあ、pandasのグラフ作成について解説するね!
理屈さえ覚えれば簡単に可視化できるようになるよ!

データを扱う際、pandasは良く使いますよね?

そして、データ分析時には、グラフを作って可視化したい、というシチュエーションが良くあると思います。

じつは、pandasのデータは簡単にグラフ化することが出来ます!

今回の内容を覚えて、もっとpandasを便利に使いましょう!

 

目次

pandasを使ったグラフ作成の基本

まずはpandasを使ったグラフ作成の基本について解説します。

pandasでグラフを作成する場合も、グラフ化では欠かせない「matplotlib」を使用します。

ただし、pandasの「plot」という関数を用いることで、普通に書くよりも簡単にグラフを書くことが出来ます!

使用するコマンド
df.plot(各種設定)

 

では、実際にグラフ作成のコードを見てみましょう。

下のデータのように、ある学校のテストの平均点をグラフ化してみます。(csvデータ)

「平均点.csv」
# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

# データの読み込み
df = pd.read_csv("平均点.csv", encoding="shift-jis", index_col=0)
# グラフ作成
plt.rcParams['font.family'] = "MS Gothic" # 日本語化の設定
df.plot(figsize=(10, 6), xlim=[2000, 2014], ylim=[0, 100])
plt.show()

このように、pandasで読み込んだcsvファイルを、「df.plot()」の1行で一気にグラフ化することが出来ます!
(日本語に対応させたり、描画させる部分は除外しています)

pandasによるデータの読み込みについては以下の記事で詳しく解説していますので、気になる方はご覧ください。

 

では、もう少し細かくコードを確認していきましょう。

まず8行目について、デフォルトの設定だと日本語は文字化けしてしまいます。

そこで、plt.rcParams[‘font.family’] = “MS Gothic”の行で、日本語対応のMSゴシックをフォントとして指定しています。

 

次に、問題のグラフ化を行っている部分ですが、df.plot()の中で「figsize=(10, 6)」でグラフサイズを指定し、「xlim=[2000, 2014]」と「ylim=[0, 100]」でそれぞれx軸とy軸の範囲を指定しています。

どちらも無くてもいいですが、自分の書きたい範囲やサイズを指定するのに役立ちます。

他の設定については、下のサイトでいろいろとまとめられていたので、参考にされるのが良いと思います。

自調自考の旅 | Pythonを使ったデ...
Pandasのplotの全引数を解説 | 自調自考の旅 Pythonモジュールのpandasにはplot関数があり、これを使えばpandasで読み込んだデータフレームを簡単に可視化することができます。特によく使うのは、kindやsubplotsですが...

 

また、「matplotlib」を使ったグラフ化の基本は下の記事で解説してますので、よければそちらもご覧ください。

まとめると、pandasを用いたグラフ化の基本は下のようなものでしたね。

  • pandasでグラフを作る際は「df.plot()」の1行でOK!
  • 日本語は文字化けするため、「plt.rcParams[‘font.family’] = “MS Gothic”」でMSゴシックに変更
  • 「figsize」でグラフサイズの変更、「xlim」や「ylim」で描画範囲の指定ができる

複数に分けてグラフを作成しよう(項目ごとのグラフ作成)

次に、グラフを項目ごとに分けて作成してみましょう!

上で表示させてグラフだと、それぞれのデータが重なってしまって見づらいですよね?

1項目ごとに分析する場合は、この章で解説するように項目ごとにグラフを作成した方が見やすいです!

使用するコマンド
df.plot(subplots=True)

 

では、実際にコードを確認してみましょう。

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

# データの読み込み
df = pd.read_csv("平均点.csv", encoding="shift-jis", index_col=0)
# グラフ作成
plt.rcParams['font.family'] = "MS Gothic" # 日本語化の設定
df.plot(figsize=(6, 10), subplots=True)
plt.show()

このように、「subplots=True」を付けるだけでそれぞれの項目でグラフを作ることが出来ます!

そして、今回はあえて「xlim」や「ylim」で描画範囲を指定しませんでした。
すると、上のようにそれぞれのデータで最適な範囲が描画させるようになります。

 

ただし、これではデータ同士を比較しにくいですよね?

また、全て1列に並んでしまうのも場合によっては見づらいため、次はそのあたりを見やすく調整してみましょう!

df.plot(figsize=(10, 5), subplots=True, sharey=True, layout=(3,2))

df.plot()に上のように追記することで、y軸の範囲をそろえ、配置も変更できました!

それぞれについて解説していきます。

 

追加で使ったコマンドは下の2つですね。(どちらもsubplots=Trueの時のみ使えます)

 使用コマンド
df.plot(subplots=True, sharex=True, sharey=True) # X軸,Y軸の共有
df.plot(subplots=True, layout=(行数,列数)) # 描画グラフの行列数指定

まず、「sharey=True」とすることで、すべてのグラフでY軸を共有できます!

範囲が分からないデータを使用して比較したい場合は、「ylim」で指定できないので、今回の「sharey=True」を用いることでうまく描画することが出来ます。

ちなみに、今回は使っていませんが、X軸の範囲が違う場合は「sharex=True」とすれば同様にX軸を共有することが出来ます。

 

次に、「layout=(3,2)」の部分ですが、これは3行2列の配置でグラフを作成する、というコマンドです。

もちろん、行列数の部分は好きなように変えられますので、データ数に応じて見やすい配置にしてください。

 

では、項目ごとのグラフ作成についてまとめておきます。

  • 項目ごとのグラフを作成する際は「df.plot(subplots=True)」とする
  • 「sharey=True」や「sharey=True」でX軸、Y軸の範囲を共有できる
  • 「layout=(行数, 列数)」とすることで、描画時のグラフの配置を指定できる

グラフの色や線の種類、凡例の設定

さて、ここまででpandasを使ったグラフ作成の基本的な部分については解説し終わりました。

次は、グラフの色や線の種類、凡例の位置やサイズなどの見た目の部分の設定について解説していきます。

グラフの色や線の種類の指定

まず、グラフの色や線の種類の設定についてです。

どちらも、グラフ作成時に「style=[]」で指定することが出来ます。

使用コマンド
df.plot(style=[スタイルの指定])

 

では、実際に色や線の種類を指定してグラフを作成してみましょう。

import pandas as pd
import matplotlib.pyplot as plt

# データの読み込み
df = pd.read_csv("平均点.csv", encoding="shift-jis", index_col=0)
# グラフ作成
plt.rcParams['font.family'] = "MS Gothic" # 日本語化の設定
style = ["b-", "g--", "r-.", "c:", "m:o"] # グラフの色や線の種類を設定
df.plot(figsize=(10, 6), ylim=[0, 100], style=style)
plt.show()

上のように、指定した色、線の種類でグラフを作成することが出来ました!

 

では、詳しく解説していきますね。

グラフの色や線の種類を指定しているのは、下の2行の部分です。

style = ["b-", "g--", "r-.", "c:", "m:o"]
df.plot(figsize=(10, 6), ylim=[0, 100], style=style)

1行で書いてしまってもいいのですが、styleの部分が長くなってしまうので、一度styleという変数に設定してからグラフを書いています。

 

そして、肝心のstyleの書き方ですが、「style=[“色 線の種類 マーカーの種類”]」をスペースを空けずに書きます!
(並びは任意です)

また複数設定する場合は、例のように「,」で繋ぎます。

設定できる色や線の種類、マーカーを下にまとめておきます。

~色の設定~

コマンド
b青 (Blue)
g緑 (Green)
r赤 (Red)
cシアン (Cyan)
m赤紫 (Magenta)
y黄 (Yellow)
k黒 (Black)
w白 (White)

~線の種類~

コマンド線の種類
実線
破線
-.点鎖線
:点線

~マーカー~

コマンドマーカー
o丸 (〇)
^三角 (△)
v逆三角 (▽)
s四角 (□)
+プラス (+)
xバツ (×)

※マーカーについては数が多いので、よく使うであろうものを抜粋しています。

 

これで、グラフの色や線の種類を自由に変えられるようになりましたね!

凡例の設定

次に、凡例の位置を指定する方法について解説します。

凡例の設定については、「Axes」を指定してから設定する必要があります。

といっても難しいことはなく、グラフ作成時に「ax = df.plot()」と指定するだけで良いです!

そして、「ax.legend()」で凡例の設定をしていきます。

使用コマンド
ax.legend(bbox_to_anchor, loc, borderaxespad, fontsize)

 

先にコードを見てから、詳しい設定について解説していきます。

# -*- coding: utf-8 -*-
import pandas as pd
import matplotlib.pyplot as plt

# データの読み込み
df = pd.read_csv("平均点.csv", encoding="shift-jis", index_col=0)
# グラフ作成
plt.rcParams['font.family'] = "MS Gothic" # 日本語化の設定
style = ["b-", "g--", "r-.", "c:", "m:o"]
ax = df.plot(figsize=(10, 6), ylim=[0, 100], style=style)
ax.legend(bbox_to_anchor=(1, 0), loc='lower right', borderaxespad=1, fontsize=18)
plt.show()

上のように、凡例の位置やサイズを指定することが出来ました!

 

では詳しく解説していきます。

まずは、「bbox_to_anchor=(1, 0)」ですが、これは凡例の位置の基準をどこに持ってくるかというものです。

使い方は、bbox_to_anchor=(xの位置, yの位置)とします。この時、xとyの位置は0~1がグラフの範囲内です。

凡例の位置の基準、というちょっと分かりにくい表現なのは、次の「loc」と併せて解説しますね!

 

では、「loc」の使い方ですが、これは凡例の位置の規準に、凡例のどの部分を合わせるか、というものです。

ややこしくなってきましたね。笑

といっても、難しく考える必要はないので、下で図解したいと思います。

bbox_to_anchor」と「loc」の位置はそれぞれ上のように考えてください。

そして、それぞれ指定したものの「●」が重なる位置に凡例がきます!

こう考えると、そこまで複雑でもないですよね?

 

では、残りの部分の解説に戻ります。

といっても、残りは簡単で、「borderaxespad=数字」で凡例の余白を指定し、「fontsize=数字」で凡例の文字サイズを指定できます。

 

これで、グラフの色や線の種類、凡例の設定について自由に行えるようになりました!
では、内容をまとめておきます。

  • df.plot(style=[スタイルの指定])でグラフの色や線の種類を指定する
  • 「style=[“色 線の種類 マーカーの種類”]」をスペースを空けずに書く
  • 凡例の設定は「ax.legend(bbox_to_anchor, loc, borderaxespad, fontsize)」で行う
  • 「bbox_to_anchor=」で凡例の位置の基準を指定
  • 「loc=」で、凡例の位置の規準に凡例のどの部分を合わせるか指定
  • 「borderaxespad=数字」で凡例の余白を指定
  • 「fontsize=数字」で凡例の文字サイズを指定

グラフを綺麗で見やすくするための設定(補助目盛、補助線)

最後に、グラフを綺麗に見せるためのいくつかの設定を紹介しておきます。

グラフを作成する際は、これを記述しておくと見やすいグラフになると思います。

plt.rcParams['font.family'] = "MS Gothic" # 日本語化の設定
plt.rcParams['xtick.direction'] = 'in' # x軸を内向きに設定
plt.rcParams['ytick.direction'] = 'in' # y軸を内向きに設定
plt.rcParams['axes.linewidth'] = 1.0 # 軸の太さを指定
plt.rcParams['axes.grid'] = True # グリッド線の描画

上を記述した状態で先ほどのグラフを作成すると、下のようになります。

軸が内側に向いたり、グリッドが入ったことでよりデータを見やすくなりましたね。

この辺りは好みのなので、自分が見やすい設定だけ反映してもらえればと思います。

 

また、補助目盛や補助グリッドを書きたい場合は、下のように記述してください。

plt.minorticks_on() # 補助目盛追加
plt.grid(which="minor", color="gray", linestyle=":") # 補助線追加

「plt.minorticks_on()」で補助目盛を追加し、「plt.grid(which=”minor”)」で補助線を追加します。

その他の設定では、「color=」で線の色を指定し、「linestyle=」で線の種類を指定します。
(線の種類は上で解説したものを参考にしてください。)

 

この章で解説したグラフの見た目は、必須ではないですが、好みに合わせて見やすいように設定する際には役に立つと思います!

まとめ

今回は、pandasを用いたグラフの作成方法から、そのグラフの見た目の変更方法まであわせて解説しました。

今回の内容を習得すれば、csvなどのデータを可視化する際に役に立つと思いますので、ぜひ覚えていってください。

 

なお、このサイトでは初心者の方向けに「Python初心者入門講座」という講座を作成していますので、気になった方はそちらもご覧ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

このブログを運営している人

非エンジニア職の社会人です。
業務の単純作業が苦手で、何とかしたいと思いプログラミングを習得しました。
このサイトが同じ悩みを抱える人の助けになれば良いなと考えています。

コメント

コメントする

目次