棒グラフと円グラフ
本ウェブサイトのプログラムは圧縮ファイルBarPiePrgs.zipにまとめられている。
なお、日本語対応版を別のウェブサイトに用意した。
表1のデータは、東京都のウェブサイトに掲載されていたものである(2017年3月)。
表1 東京都の人口(平成26年) |
||||
|
区部 All-Ku |
市部 All-Shi |
郡部 All-Gun |
島部 All-Islands |
人口 |
9143041 |
4151178 |
57738 |
26627 |
表1のデータの棒グラフを描くPythonプログラムを以下のように作成した。
import matplotlib.pyplot as plt
import numpy as np
values = [9143041, 4151178, 57738,
26627]
# データ: 東京都地域別人口、平成26年
indx = np.arange(4)
# カテゴリ数
plt.bar(indx, values)
plt.xticks(indx, ['All-Ku', 'All-Shi',
'All-Gun', 'All-Islands'])
plt.show()
# 描画グラフの表示
人口のデータ値をリストvaluesに設定し、カテゴリ数(表1の場合、「区部」、「市部」、「郡部」、「島部」の4カテゴリ)をindxに関数np.arange(4)によって設定している。このindxとvaluesの組み合わせでplt.bar(indx, values)と棒グラフの描画を行っている。横軸のカテゴリのラベルは関数plt.xticks( )によって設定している。全ての描画作業の後、plt.show()を呼び出して描画グラフを表示している。。上のプログラムの場合、図1のように棒グラフが表示される。
図1
グラフの左上にとあるのは、を表している。したがって、横軸の値は、を表している。
描画グラフは、下にある「保存」ボタンをクリックすれば保存することができる。保存した画像ファイルを他のソフトで読み込んで、説明を加えたりすれば、より解り易い図にすることができる。
右上の「閉じる」ボタンをクリックすれば、描画ウィンドウは閉じられて、plt.show()の実行終了となる。
次のプログラムは、関数plt.barh()によって横棒グラフを描画するものである(図2)。
import matplotlib.pyplot as plt
import numpy as np
values = [9143041, 4151178, 57738,
26627]
#
データ
indx = np.arange(4)
#
カテゴリ数
plt.barh(indx, values)
#
横棒グラフの描画
plt.yticks(indx, ['All-Ku', 'All-Shi',
'All-Gun', 'All-\nIslands'])
plt.show()
#
描画グラフの表示
図2
カテゴリのラベル「All-Islands」が長いので、改行文字「'\n’」を入れて、「All-」と「Islands」の2行に分けて表示している。
表1のデータの円グラフ(図3)を描くプログラムを以下のように作成した。
import matplotlib.pyplot as plt
import numpy as np
values = [9143041, 4151178, 57738,
26627]
#
データ
indx = np.arange(4)
#
カテゴリ数
Labels = ['All-Ku', 'All-Shi',
'All-Gun', 'All-Islands']
Colors = ['yellow', 'green', 'red',
'blue']
#
色名 full name
plt.pie(values, labels = Labels,
colors = Colors)
#
円グラフの描画
plt.axis('equal')
#
縦横同じサイズ
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
カテゴリのラベル「All-Gun」と「All-Islands」が重なっていて見難いので、「'All-Gun’」の先頭に改行文字「'\n’」を置いて以下のようにする。
import matplotlib.pyplot as plt
import numpy as np
values = [9143041, 4151178, 57738,
26627]
indx = np.arange(4)
Labels = ['All-Ku', 'All-Shi', '\nAll-Gun',
'All-Islands']
# '\n'を'All-Gun'の先頭に付ける
Colors = ['yellow', 'green', 'red',
'blue']
plt.pie(values, labels = Labels,
colors = Colors)
plt.axis('equal')
plt.show()
このときは、「'All-Gun’」が1行下に移動するので図4のように重ならない。
図4
色の設定をRGBの16進数表記で行う例を以下のように作成した。
import matplotlib.pyplot as plt
import numpy as np
values = [9143041, 4151178, 57738,
26627]
indx = np.arange(4)
Labels = ['All-Ku', 'All-Shi',
'\nAll-Gun', 'All-Islands']
Colors1 = ['#FFFF00', '#00FFFF',
'#FF0000', '#0000FF']
# 色をRGBの16進数表記で指定
plt.pie(values, labels = Labels,
colors = Colors1)
plt.axis('equal')
plt.show()
上のプログラムを実行すると、図5の円グラフが描かれる。
図5
色の指定を簡略形で行った場合を以下のように作成した。
import matplotlib.pyplot as plt
import numpy as np
import codecs
values = [9143041, 4151178, 57738,
26627]
indx = np.arange(4)
Labels = ['All-Ku', 'All-Shi',
'\nAll-Gun', 'All-Islands']
Colors2 = ['y', 'g', 'r', 'b']
plt.pie(values, labels = Labels,
colors = Colors2)
plt.axis('equal')
plt.show()
実行すると図6のような円グラフが表示された。
図6