Matplotlib は Python で最も広く使われているデータ可視化ライブラリの 1 つです。単純な可視化から複雑な可視化まで、ほとんどの場合、このライブラリは頼りになります。
このチュートリアルでは、Matplotlib でプロットの背景を変更する方法について見ていきます。
データおよびライブラリのインポート
まず、必要なライブラリをインポートしましょう。Matplotlibは当然必要ですし、Pandasはデータを読み込むために使用します。
import matplotlib.pyplot as plt
import pandas as pd
具体的には、Seattle Weather Datasetを使用します。
weather_data = pd.read_csv("seattleWeather.csv")
print(weather_data.head())
DATE PRCP TMAX TMIN RAIN
0 1948-01-01 0.47 51 42 True
1 1948-01-02 0.59 45 36 True
2 1948-01-03 0.42 45 35 True
3 1948-01-04 0.31 45 34 True
4 1948-01-05 0.17 45 32 True
プロットの作成
それでは、可視化したいいくつかの変数を使って、簡単な Matplotlib の散布図を作成してみましょう。
PRCP = weather_data['PRCP']
TMAX = weather_data['TMAX']
TMIN = weather_data['TMIN']
ここでは、最低気温と降水量の散布図を作成し、Matplotlib の PyPlot を使って show()
してみましょう。
plt.scatter(TMIN, PRCP)
plt.show()
生成されたグラフは解釈可能ですが、少し地味に見えます。これをカスタマイズしてみましょう。いくつかの異なる方法を使って、グラフの背景をカスタマイズしたいと思います。
Matplotlib でプロットの背景を変更する
さて、このプロットの背景を変更してみましょう。これには2つの異なるアプローチがあります。顔の色を変更することができ、現在 white
に設定されています。また、 imshow()
を用いて画像を入力することもできます。
Matplotlib で軸の背景を変更する
まず、顔の色を変更しましょう.これは、 set()
関数で、 face
引数とその新しい値を渡すか、専用の set_facecolor()
関数で行います。
ax = plt.axes()
ax.set_facecolor("orange")
# OR
ax.set(facecolor = "orange")
plt.scatter(TMIN, PRCP)
plt.show()
どちらの方法でも、同じ関数を呼び出すので、同じ結果になります。
Matplotlibで図の背景を変更する
図の背景を設定し、軸を透明にしたい場合、これは図を作成する際に set_alpha()
引数を用いて行うことができます。それでは、図形と軸オブジェクトを作成してみましょう。もちろん、 set()
関数を使用して、代わりに alpha
属性を渡すこともできます。
図形全体の色は青で、軸オブジェクトの alpha
を最初は 1.0
に設定して、完全に不透明であることを意味します。軸オブジェクトをオレンジ色にすることで、青い図形の中にオレンジ色の背景ができます。
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.6)
ax = fig.add_subplot(111)
ax.patch.set_facecolor('orange')
ax.patch.set_alpha(1.0)
plt.scatter(TMIN, PRCP)
plt.show()
では、軸のサブプロットのアルファを 0.0
に下げるとどうなるか見てみましょう。
fig = plt.figure()
fig.patch.set_facecolor('blue')
fig.patch.set_alpha(0.6)
ax = fig.add_subplot(111)
ax.patch.set_facecolor('orange')
ax.patch.set_alpha(0.0)
plt.scatter(TMIN, PRCP)
plt.show()
プロット自体の背景が透明になったことに注意してください。
Matplotlib でプロットの背景に画像を追加する
プロットの背景に画像を使いたい場合、これは PyPlot の imread()
関数を用いて行うことができます。この関数は画像を Matplotlib に読み込み、それを imshow()
関数で表示することができます。
画像の上に描画するためには、画像の範囲を指定する必要があります。デフォルトでは,Matplotlib は画像の左上隅を画像の原点として使用します.imshow()` 関数には,画像のどの領域を表示するかを指定する点のリストを与えることができます.サブプロットと組み合わせると、画像の上に別のプロットを挿入することができます。
ここでは、雨の画像をプロットの背景として使ってみましょう。
img = plt.imread("rain.jpg")
fig, ax = plt.subplots()
ax.imshow(img, extent=[-5, 80, -5, 30])
ax.scatter(TMIN, PRCP, color="#ebb734")
plt.show()
extent引数は、この順序で追加の引数を取ります。このとき、
horizontal_min,
horizontal_max,
vertical_min,
vertical_max`) を追加で指定することができます。
ここでは、画像を読み込んでトリミングし、 imshow()
を用いて軸上に表示しています。そして、散布図を別の色でプロットし、表示しています。
結論
このチュートリアルでは、PythonとMatplotlibを使ってプロットの背景を変更するいくつかの方法について説明しました。
もしあなたがデータ可視化に興味があり、何から始めたらよいかわからない場合は、Pythonによるデータ可視化に関する書籍の束をチェックしてみてください。
Pythonによるデータ可視化
データビジュアライゼーションで危険な存在になる
30日間無条件返金保証
初級から上級まで
定期的に無料で更新(最新更新は2021年4月)
ボーナスリソースやガイドを更新
Pythonでデータ可視化 MatplotlibとPandasは、Pythonの基礎知識を持つ全くの初心者が、PandasとMatplotlibを使って、単純なプロットからインタラクティブなボタンを持つアニメーションの3Dプロットまで、これらのライブラリで高度な作業をするための強力な基盤を構築できるように設計された書籍です。
本書は、Pythonの基本的な知識を持つ方を対象としています。
PandasとMatplotlibについて知っておく必要があることすべてを教えてくれる詳細なガイドです。
Pythonによるデータ可視化」は、Pythonの初級~中級開発者向けの書籍で、Pandasを使った簡単なデータ操作から、MatplotlibやSeabornなどのコアなプロットライブラリ、そしてAltairなどの宣言的・実験的ライブラリの活用方法までを案内しています。具体的には、11章にわたって、9つのPythonライブラリを取り上げています。Pandas、Matplotlib、Seaborn、Bokeh、Altair、Plotly、GGPlot、GeoPandas、そしてVisPyです。
データビジュアライゼーションのユニークで実用的なガイドとして、あなたがキャリアで使うかもしれない多くのツールを紹介しています。