Up

棒グラフと円グラフ

本ウェブサイトのプログラムは圧縮ファイルBarPiePrgsJp.zipにまとめられている。

 

日本語表記のグラフは、モジュールjapanize_matplotlibを用いるとモジュールmatplotlibで可能である。モジュールjapanize_matplotlibpipコマンドを

 

pip install Japanize_matplotlib

 

と実行するとインストールできる。Anacondacondaコマンドではインストールできなかったが(2020.06)、Anacondaの場合もpipコマンドでインストールできた。

 

 

表1のデータは、東京都のウェブサイトに掲載されていたものである(2017年3月)。

 

表1 東京都の人口(平成26年)

 

区部

市部

郡部

島部

人口

9143041

4151178

57738

26627

 

表1のデータの棒グラフを描くPythonプログラムを以下のように作成した。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]       #   データ: 東京都地域別人口、平成26年

indx = np.arange(4)                             #   カテゴリ数

plt.bar(indx, values)

plt.xticks(indx, ['区部', '市部', '郡部', '島部'], fontsize = 16)

plt.yticks(fontsize = 14)

plt.title('東京都の人工(平成26年)', fontsize = 20)

plt.show()                                      #   描画グラフの表示

 

人口のデータ値をリストvaluesに設定し、カテゴリ数(表1の場合、「区部」、「市部」、「郡部」、「島部」の4カテゴリ)をindxに関数np.arange(4)によって設定している。このindxvaluesの組み合わせでplt.bar(indx, values)と棒グラフの描画を行っている。横軸のカテゴリのラベルは関数plt.xticks( )によって設定している。全ての描画作業の後、plt.show()を呼び出して描画グラフを表示している。上のプログラムの場合、図1のように棒グラフが表示される。

図1

 

グラフの左上にとあるのは、を表している。したがって、横軸の値は、を表している。

描画グラフは、下にある「保存」ボタンをクリックすれば保存することができる。保存した画像ファイルを他のソフトで読み込んで、説明を加えたりすれば、より解り易い図にすることができる。

右上の「閉じる」ボタンをクリックすれば、描画ウィンドウは閉じられて、plt.show()の実行終了となる。

 

次のプログラムは、関数plt.barh()によって横棒グラフを描画するものである(図2)。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]               #       データ

indx = np.arange(4)                                     #       カテゴリ数

plt.barh(indx, values)                                  #       横棒グラフの描画

plt.yticks(indx, ['区部', '市部', '郡部', '島部'], fontsize = 16)

plt.xticks(ticks = [0, 2e6, 4e6, 6e6, 8e6],

           labels = ['0', '200', '400', '600', '800'],

           fontsize = 12)

plt.xlabel('人口(人)', fontsize = 16)

plt.title('東京都の人口(平成26年)', fontsize = 20)

plt.show()                                              #       描画グラフの表示

 

図2

 

横軸(X軸)にメモリを入れるためにplt.xticks

 

plt.xticks(ticks = [0, 2e6, 4e6, 6e6, 8e6],

           labels = ['0', '200', '400', '600', '800'],

           fontsize = 12)

 

と実行している。第1パラメータにメモリの位置、第2パラメータにメモリの文字列を設定している。

 

表1のデータの円グラフ(図3)を描くプログラムを以下のように作成した。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]                   #       データ

indx = np.arange(4)                                         #       カテゴリ数

Labels = ['区部', '市部', '郡部', '島部']

Colors = ['yellow', 'green', 'red', 'blue']                 #       色名 full name

plt.pie(values, labels = Labels,

        textprops = {'fontsize': 20}, colors = Colors)      #       円グラフの描画

plt.axis('equal')                                           #       縦横同じサイズ                  

plt.title('東京都の人口分布(平成26年)', fontsize = 24)

plt.show()                                                  #       グラフの表示

 

リストColorsに円グラフで使用する色を設定している。色は「’blue’」、「’green’」、「’red’」、’cyan’」、「’magenta’」、「’yellow’」、「’black’」、「’white’」とfull nameで指定するか、それらの簡略形「’b’」、「’g’」、「’r’」、’c’」、「’m’」、「’y’」、「’k’」、「’w’」でも指定することができる。あるいはRGBで設定することもできる。例えば、「’#123456’」は、RGBの値が16進数表記でR=12、G=34、B=56であることを表す。円グラフの描画は関数plt.pie()

plt.pie(values, labels = Labels, colors = Colors)

と呼び出すことによって行っている。円グラフが楕円ではなく円になるように軸方向の長さの設定を

plt.axis('equal')

と行っている。以上の描画の後、plt.show()の呼び出しで描画グラフを表示している(図3)。

 

図3

 

カテゴリのラベル「郡部」と「島部」が重なっていて見難いので、「'郡部’」の先頭に改行文字「'\n’」を置いて以下のようにする。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]                   #       データ

indx = np.arange(4)                                         #       カテゴリ数

Labels = ['区部', '市部', '\n\n郡部', '島部']

Colors = ['yellow', 'green', 'red', 'blue']                 #       色名 full name

plt.pie(values, labels = Labels,

        textprops = {'fontsize': 20}, colors = Colors)      #       円グラフの描画

plt.axis('equal')                                           #       縦横同じサイズ                  

plt.title('東京都の人口分布(平成26年)', fontsize = 24)

plt.show()                                                  #       グラフの表示

 

このときは、「'郡部’」が2行分下に移動するので図4のように重ならない。

図4

 

色をRGBの各光の強さを0から1までの数値で指定する例を以下のように作成した。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]                   #       データ

indx = np.arange(4)                                         #       カテゴリ数

Labels = ['区部', '市部', '\n\n郡部', '島部']

Colors1 = [(1.0, 1.0, 0.0), (0.0, 1.0, 1.0),

           (1.0, 0.0, 0.0), (0.0, 0.0, 1.0)]                #       色(R, G, B

plt.pie(values, labels = Labels,

        textprops = {'fontsize': 20}, colors = Colors1)     #       円グラフの描画

plt.axis('equal')                                           #       縦横同じサイズ                  

plt.title('東京都の人口分布(平成26年)', fontsize = 24)

plt.show()                                                  #       グラフの表示

 

上のプログラムを実行すると、図5の円グラフが描かれる。

図5

 

色の指定を簡略名で行った場合を以下のように作成した。

 

import matplotlib.pyplot as plt

import japanize_matplotlib

import numpy as np

 

values = [9143041, 4151178, 57738, 26627]                   #       データ

indx = np.arange(4)                                         #       カテゴリ数

Labels = ['区部', '市部', '\n\n郡部', '島部']

Colors2 = ['y', 'g', 'r', 'b']                              #       色の簡略名

plt.pie(values, labels = Labels,

        textprops = {'fontsize': 20}, colors = Colors2)     #       円グラフの描画

plt.axis('equal')                                           #       縦横同じサイズ                  

plt.title('東京都の人口分布(平成26年)', fontsize = 24)

plt.show()                                                  #       グラフの表示

 

実行すると図6のような円グラフが表示された。

図6

 

なお、Pythonによるデータ分析については、拙著<岡本安晴「ないPythonデータ分析丸善出版>で扱っている。

 

 

Up