Pythonを使用してMatplotlibで棒グラフを作成する

Matplotlibモジュールを使用してPythonで棒グラフを作成してみます。

棒グラフは、Matplotlibモジュールで作成できるチャートまたはグラフの1つです。棒グラフは、データ表現の中で非常に一般的であり、簡単に人が解釈して理解できるものです。

Matplotlibモジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。

■Python

Pythonバージョン

今回のPythonのバージョンは、「3.8.2」を使用しています。(Windows10)

■Matplotlibモジュールを使用して棒グラフを作成する

早速、Matplotlibモジュールを使用して棒グラフを作成し表示するスクリプトを書いていきます。

■コード

import matplotlib.pyplot as plt

x=[1,2,3]
y=[20,40,60]

plt.bar(x,y)
plt.title("新規顧客の獲得")
plt.xlabel("人数")
plt.ylabel("費用")
plt.show()

まず、matplotlibをインポートします。さらにmatplotlibの中のpyplotモジュールをインポートします。

次にxという変数を作成し、[]内に1,2,3と記述します。これでxの値が1,2,3となります。

続けてyという変数を作成し、[]内に20,40,60と記述します。これでyの値が20,40,60となります。

次にbar()関数でxとyの値を用いて棒グラフを作ります。

棒グラフを作った後は、title()で作成した棒グラフの図のタイトルを表示できます。今回は「新規顧客の獲得」としています。

棒グラフの図のタイトルを設定した後は、xlabel()でx軸のラベルを設定することができます。今回は「人数」としています。

x軸のラベルを設定した後はylabel()でy軸のラベルを設定します。今回は「費用」としています。

最後にshow()で作成した棒グラフの図を表示させます。

■実行

今回書いたスクリプトを「create_barchart.py」という名前で保存し、コマンドプロンプトから実行してみます。

実行してみると、ウインドウが表示され、今回作成した棒グラフが表示されることを確認できました。

■日本語を表示する、文字化けしないための方法

作成した棒グラフの図が表示されることは確認できましたが、図を確認すると日本語の表記が文字化けしていることが確認できます。

C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\backends\backend_agg.py:183: RuntimeWarning: Glyph 35215 missing from current font.
font.set_text(s, 0, flags=flags)

またコマンドプロンプトを確認すると、「RuntimeWarning:(ランタイム警告)」という警告が表示されています。内容を確認すると「グリフ 35215(Glyph 35215)」 という現在のフォントから欠落していますというものです。つまり、Glyph 35215というフォントでは日本語が表示できないのです。

日本語で表示させる場合には、下記のようにコードを変更します。

■コード

import matplotlib.pyplot as plt

x=[1,2,3]
y=[20,40,60]

plt.bar(x,y)
plt.title("新規顧客の獲得", fontname="MS Gothic")
plt.xlabel("人数", fontname="MS Gothic")
plt.ylabel("費用", fontname="MS Gothic")
plt.show()

棒グラフの図で日本語表記をさせたい場合は、「fontname=”フォント名”」を記述します。今回の場合では、MS ゴシック(MS Gothic)と呼ばれるMicrosoft Windows 日本語版に標準で搭載されているゴシック体の和文フォントになります。これ以外にも和文フォントはあります。

■実行

変更したコードを保存し、コマンドプロンプトから実行してみます。

実行してみると、棒グラフの図に日本語が表記されていることが確認できました。「RuntimeWarning:(ランタイム警告)」も表示されていません。

■棒グラフに2つの異なるデータを追加し、凡例を作成する

棒グラフに2つの異なるデータを追加し、凡例を作成し表示させるスクリプトも書いてみます。

■コード

import matplotlib.pyplot as plt

x=[1,2,3]
x2 =[4,5,6]

y=[20,40,60]


plt.bar(x,y, label="A社" )
plt.bar(x2,y, label="B社")
plt.title("新規顧客の獲得", fontname="MS Gothic")
plt.xlabel("人数", fontname="MS Gothic")
plt.ylabel("費用", fontname="MS Gothic")
plt.legend()
plt.show()

先程の棒グラフの図を作成した時とあまり変わりありませんが、x2という変数とbar()関数がそれぞれ追加になり、異なるデータを追加しています。

また、legend()というのが追加になっています。これで棒グラフの図に凡例を追加することができます。

■実行

変更したコードを保存し、コマンドプロンプトから実行してみます。

実行してみると、棒グラフの図に凡例を追加することができました。

■凡例での日本語を表示する、文字化けしないための方法

棒グラフの図に凡例を追加できましたが、図を確認すると日本語表記になっておらず、文字化けしている箇所があります。

この箇所の日本語表記する場合にはどうすれば良いのか。

■コード

import matplotlib.pyplot as plt

x=[1,2,3]
x2 =[4,5,6]

y=[20,40,60]

plt.bar(x,y, label="A社", fontname="MS Gothic")
plt.bar(x2,y, label="B社", fontname="MS Gothic")
plt.title("新規顧客の獲得", fontname="MS Gothic")
plt.xlabel("人数", fontname="MS Gothic")
plt.ylabel("費用", fontname="MS Gothic")
plt.legend()
plt.show()

棒グラフの図で日本語表記をさせた時と同じように「fontname=”フォント名”」を記述してみます。

■実行

変更したコードを保存し、コマンドプロンプトから実行してみます。

File “C:\Users\user\create_barchart.py”, line 9, in
plt.bar(x,y, label=”A社”, fontname=”MS Gothic”)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\pyplot.py”, line 2407, in bar
return gca().bar(
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\__init__.py”, line 1565, in inner
return func(ax, *map(sanitize_sequence, args), **kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\axes\_axes.py”, line 2397, in bar
r.update(kwargs)
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\artist.py”, line 1006, in update
ret = [_update_property(self, k, v) for k, v in props.items()]
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\artist.py”, line 1006, in ret = [_update_property(self, k, v) for k, v in props.items()]
File “C:\Users\user\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\matplotlib\artist.py”, line 1001, in _update_property
raise AttributeError(‘{!r} object has no property {!r}’
AttributeError: ‘Rectangle’ object has no property ‘fontname’

実行すると、「AttributeError(属性エラー)」という表示がされます。「Rectangle」というオブジェクトには「fontname」というプロパティは存在しませんというエラーで、Rectangleオブジェクトでは、fontnameは使えないということです。

■対処方法

■コード

import matplotlib.pyplot as plt

x=[1,2,3]
x2 =[4,5,6]

y=[20,40,60]


plt.bar(x,y, label="A社")
plt.bar(x2,y, label="B社")
plt.title("新規顧客の獲得", fontname="MS Gothic")
plt.xlabel("人数", fontname="MS Gothic")
plt.ylabel("費用", fontname="MS Gothic")
plt.legend(prop={"family":"MS Gothic"})
plt.show()

では、対処方法になりますが、legend()の()内に「prop={“family”:”MS Gothic”}」と記述すると、日本語が表記することができます。

■実行

変更したコードを保存し、コマンドプロンプトから実行してみます。

実行してみると、日本語で表記されていることを確認できました。

コメント

タイトルとURLをコピーしました