ラベル matplotlib の投稿を表示しています。 すべての投稿を表示
ラベル matplotlib の投稿を表示しています。 すべての投稿を表示

2020年5月5日火曜日

【matplotlib】散布図の作成と体裁の変更

 グラフ描画ライブラリmatplotlibを用いた散布図作成方法とグラフの体裁の変更方法を説明する。散布図を作成するにはmatplotlib.pyplot.scatterを使用する。

ライブラリmatplotlibを使う場合にはインポートが必要。matplotlib.pyplotは通常以下の書式でpltと略されインポートされる。

import matplotlib.pyplot as plt


1. 散布図作成

散布図を作成するには matplotlib.pyplot.scatter を用いる。書式は以下の通り。


matplotlib.pyplot.scatter(x,
                          y,
                          s=None,
                          c=None,
                          marker=None,
                          cmap=None,
                          norm=None,
                          vmin=None,
                          vmax=None,
                          alpha=None,
                          linewidths=None,
                          edgecolors=None,
                          plotnonfinite=False,
                          data=None)

引数 意味
x, y データ
s マーカーサイズ(オプション)。points**2
c マーカー色(オプション)
marker マーカーの形(オプション)。デフォルトは'o'
cmap カラーマップの指定(オプション)
norm カラーマップの正規化(オプション)
vmin, vmax カラーマップ正規化時の最大、最小値(オプション)
alpha マーカーの透明度(オプション)。0(透明)~1(不透明)
linewidths マーカー境界線太さ(オプション)
edgecolors マーカー境界線色(オプション)

引数 x y に各点のx、yの値を与えれば最も簡単な散布図が作成できる。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y)
plt.show()

実行結果



2. グラフの体裁変更

グラフタイトル、x軸ラベル、y軸ラベルを表示するには matplotlib.pyplot に対して title xlabel ylabel を用いる。
また、目盛り線を表示するには grid True とする。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y)

plt.title('scatter')
plt.xlabel('x')
plt.ylabel('y')
plt.grid(True)

plt.show()

実行結果



プロットの色・サイズを変えるには scatter の引数 c s を使う。 s にはマーカーのpoint**2の値を与える。

コード

import matplotlib.pyplot as plt


x = [2, 5, 7, 12]
y = [11, 24, 44, 70]

plt.scatter(x, y, s=80, c='orange')

plt.show()

実行結果



複数系列をプロットする場合は scatter' を系列の数繰り返す。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]
x2 =  [2, 5, 7, 12]
y2 = [18, 43, 74, 170]

plt.scatter(x, y, s=80, c='orange')
plt.scatter(x2, y2, s=80, c='blue')

plt.show()

実行結果



各水準に名称を付ける場合は scatter の引数 label を与え matplotlib.pyplot オブジェクトに対して legend を実行する。

コード

import matplotlib.pyplot as plt

x = [2, 5, 7, 12]
y = [11, 24, 44, 70]
x2 =  [2, 5, 7, 12]
y2 = [18, 43, 74, 170]

plt.scatter(x, y, s=80, c='orange', label='A')
plt.scatter(x2, y2, s=80, c='blue', label='B')

plt.legend()
plt.show()

実行結果



3. リファレンス

matplotlib.pyplot.scatter

使用バージョン:Python 3.7.0 / matplotlib 3.2.1

2020年5月4日月曜日

【matplotlib】円グラフ作成と体裁の変更

 グラフ描画ライブラリ matplotlib を用いた円グラフ作成方法とグラフの体裁の変更方法を説明する。円グラフを作成するには matplotlib.pyplot.pie を使用する。

 ライブラリ matplotlib を使う場合にはインポートが必要。 matplotlib.pyplot は通常以下の書式で plt と略されインポートされる。

import matplotlib.pyplot as plt



1. 円グラフの作成

 円グラフを作成するには matplotlib.pyplot.pie を用いる。書式は以下の通り。

matplotlib.pyplot.pie(x, 
                     explode=None,
                     labels=None, 
                     colors=None, 
                     autopct=None, 
                     pctdistance=0.6, 
                     shadow=False, 
                     labeldistance=1.1, 
                     startangle=None, 
                     radius=None, 
                     counterclock=True, 
                     wedgeprops=None, 
                     textprops=None, 
                     center=(0, 0), 
                     frame=False, 
                     rotatelabels=False, 
                     \*, 
                     data=None)

 引数は下表の通り。必須の引数はグラフの値xのみ。

引数 意味
x グラフの値をリストなど1次元の配列で指定。必須
explode 各水準の扇形の外側へのずれ量。オプション。デフォルトはずれ量なし
labels 水準名をリストなど1次元の配列で指定。。オプション。デフォルトは表示なし
colors 各水準の扇形の色。オプション。デフォルトは自動で色が割り振られる
autopct 各水準の面積比(%)を表示するかどうか。オプション(デフォルトは表示なし)
pctdistance autopctでパーセンテージを表示する場合の円の中心と文字の位置の比。オプション(デフォルトは0.6)
shadow 扇形に下に影を付けるかどうか。オプション(デフォルトは影なし)
normalize 扇形の合計を1にするかどうか。デフォルトは1(True)。Falseを指定した場合、xが1以下では部分的な円グラフとなり、xが1より大きい場合エラーとなる
labeldistance 水準名の表示位置を半径で指定。デフォルトは1.1。Noneとした場合水準名が表示されない。
startangle 円グラフの描画開始角度。デフォルトは0でx軸方向。半時計周りに数字が大きくなる
radius 円グラフの直径。デフォルトは1
counterclock 円グラフの進行方向。デフォルトはTrueで反時計回り。Falseで時計回り
wedgeprops 扇形の境界線の表示と属性の設定。デフォルトは無し(None)
textprops テキストの属性の設定。
center 円グラフの中心座標。デフォルトは(0, 0)
frame 座標軸の表示。デフォルトはFalse
rotatelabels Trueでラベルを円周に沿った向きに変更。デフォルトはFalse

 最低限の円グラフを作成するには必須の引数 x を設定すればよい。 x にそれぞれの水準の大きさ(円グラフの扇型のサイズ比に相当)を設定し、 plt.pie(x) でグラフが作成され plt.show() でグラフが表示される。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x)
plt.show()


2. グラフの体裁変更

explodeの指定

 explodeは扇型を外側にずらす量を設定できる。半径を1とした場合のずれ量を水準毎に設定する。2番目の水準のみ0.1ずらす場合。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
exp = [0, 0.1, 0, 0]

plt.pie(x, explode=exp)
plt.show()


labelsの指定

 labelsは扇型の外側に水準名を表示する。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
lab = ['A', 'B', 'C', 'D']

plt.pie(x, labels=lab)
plt.show()


colorsの指定

 colorsは扇型の色を指定する。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
col = ['pink', 'purple', 'blue', 'gold']

plt.pie(x, colors=col)
plt.show()


autopctの指定

 各水準の面積比(%)を表示する場合は引数 autopct を使う。 autopct には表示する桁数を%表記で与える。

整数で表示する場合 autopct='%1.0f%%' となる。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, autopct='%1.0f%%')
plt.show()


小数点以下1桁まで表示する場合 autopct='%1.1f%%' とする。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, autopct='%1.1f%%')
plt.show()


pctdistanceの指定

 autopctで各水準の面積比(%)を表示する場合の表示位置をpctdistanceにより中心からの距離で設定する。半径が距離1でデフォルトは0.6。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, 
        autopct='%1.0f%%',
        pctdistance=0.85)
plt.show()


shadowの指定

 shadowTrueとすると扇形の下に影が付く。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
exp = [0.05, 0.05, 0.05, 0.05]

plt.pie(x,
        explode=exp, 
        shadow=True)
plt.show()


normalizeの指定

 normalizeは扇型の面積の合計を1にするかどうかを決めデフォルトはTrue(合計1)。Falseとした場合、値xの合計が1以下であれば一周に満たない円グラフとなり値の合計が1より大きいとerrorになる。

import matplotlib.pyplot as plt

x = [0.10, 0.12, 0.24, 0.07]

plt.pie(x, normalize=False)
plt.show()


labeldistanceの指定

 labeldistancelabelで水準名を表示する場合の中心からの距離を指定する。デフォルトは1.1。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
lab = ['A', 'B', 'C', 'D']

plt.pie(x, 
        labels=lab,
        labeldistance=0.7)
plt.show()


startangle, counterclockの指定

 startangleは1つ目の水準の開始角度。デフォルトは0で3時の方向を示す。counterclockは扇型の進行方向で、デフォルトはTrueで反時計回りとなる。

デフォルト設定では一つ目の水準の開始位置が3時の方向で、反時計回りにグラフが書かれていく。より一般的な、開始位置を12時の方向にして時計回りにグラフを書いていく設定にするには、引数に開始位置 startangle=90と回転方向counterclock=Noneを与える。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, 
        startangle=90,
        counterclock=None)
plt.show()


radiusの指定

 radiusで円グラフの半径を指定する。デフォルトは1

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, radius=0.6)
plt.show()


wedgepropsの指定

 wedgepropsで扇形の輪郭線を描画できる。デフォルトは輪郭線なし。wedgepropsには属性を辞書型にした引数を使う。指定可能な属性はmatplotlib.patches.Wedgeを参照。
線幅3pxの灰色の輪郭線を描画する場合。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, 
        wedgeprops={'linewidth': 3, 
                    'edgecolor':'#404040'})
plt.show()


textpropsの指定

 textpropsで表示するテキストの書式を設定できる。引数は属性を辞書型にする。指定可能な属性はmatplotlib.textを参照。

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
lab = ['A', 'B', 'C', 'D']

plt.pie(x,
        labels=lab, 
        textprops={'size': 20, 
                   'color':'blue',
                   'style': 'oblique'})
plt.show()


frameの指定

 frameTrueにするとグラフの外枠が表示される。デフォルトはFalse

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]

plt.pie(x, frame=True)
plt.show()


rotatelabelsの指定

 rotatelabelsTrueにするとラベルの向きが円周に沿った向きとなる。デフォルトはFalse

import matplotlib.pyplot as plt

x = [10, 12, 24, 7]
lab = ['A', 'B', 'C', 'D']

plt.pie(x,
        labels=lab, 
        rotatelabels=True)
plt.show()


3. リファレンス

matplotlib.pyplot.pie

使用バージョン:Python 3.7.0 / matplotlib 3.2.1

【matplotlib】棒グラフ作成と体裁の変更

グラフ描画ライブラリ matplotlib を用いた棒グラフ作成方法とグラフの体裁の変更方法を説明する。棒グラフを作成するには matplotlib.pyplot モジュールを使用する。

matplotlibを使う場合にはインポートが必要。 matplotlib.pyplot は通常以下の書式でpltと略されインポートされる。

コード

import matplotlib.pyplot as plt


1. 棒グラフ作成

棒グラフを作成するには matplotlib.pyplot.bar メソッドを用いる。書式は以下の通り(これ以外にも多数の引数がある)。

コード

matplotlib.pyplot.bar(x, 
                     height, 
                     width=0.8, 
                     bottom=None, 
                     align='center', 
                     data=None)

引数 x にバーの座標もしくは各バーの水準名を与え、引数 height にそれぞれのバーの高さを与える。

x に各バーの水準名を与えた場合。

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height)
plt.show()

実行結果



x に各バーの座標を与えた場合。

コード

import matplotlib.pyplot as plt

x = [1.5, 2.5, 4, 6]
height = [10, 12, 24, 7]

plt.bar(x, height)
plt.show()

実行結果



2. 軸ラベル・グラフタイトルの表示

グラフタイトルを表示する場合は plt.title x軸のラベルを表示する場合は plt.xlabel 、y軸のラベルを表示する場合は plt.ylabel を指定する。

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height)

plt.title('result')
plt.xlabel('team')
plt.ylabel('point')

plt.show()

実行結果



3. グラフの体裁変更

バー幅の変更、バー色の変更、バー高さの基準値の変更、log表示、グリッドの表示について。

バーの幅を変更するには width を指定する。デフォルトはwidth=0.8
width=0.5とした場合

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height, width=0.5)

plt.show()

実行結果




バーの色を変更するには color を指定する。
color='red'とした場合

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height, color='red')

plt.show()

実行結果



色の指定はカラー名もしくはRGBのタプルで指定できる。カラー名のリストはリファレンスより、

タプルでの指定は(R, G, B)の形式でRGBそれぞれ0~1.0の値を取る。

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height, color=(0.3, 1.0, 0.5))

plt.show()

実行結果


バー高さの基準値の変更は bottom を指定する。
bottom=-5とした場合

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height, bottom=-5)

plt.show()

実行結果




高さをlog表示するには log='true' を指定する。

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 122, 2400, 70]

plt.bar(x, height, log='true')

plt.show()

実行結果




グリッドを表示する場合は plt.grid() を追加する。

コード

import matplotlib.pyplot as plt

x = ['A', 'B', 'C', 'D']
height = [10, 12, 24, 7]

plt.bar(x, height)
plt.grid()

plt.show()

実行結果



4. リファレンス

matplotlib > matplotlib.pyplot.bar
matplotlib > List of named colors

使用バージョン:Python 3.7.0 / matplotlib 3.2.1

2020年4月27日月曜日

【matplotlib】グラフ作成、タイトル・ラベル・凡例・グリッドの表示

グラフ描画ライブラリ matplotlib を用いると様々なグラフが作成できる。グラフ作成には matplotlib.pyplot モジュールを使用する。

matplotlibを使うにはインポートが必要。 matplotlib.pyplot は通常以下の書式でpltと略されインポートされる。

import matplotlib.pyplot as plt


1. グラフ作成

グラフを作成するには plt.plot メソッドで、引数x,yを与え、 plt.show() とするとグラフが表示される。

次の例では0から5まで0.1刻みの値を持つ ndarray を生成しそれをxに、sin(x)をyとしてグラフを描画する。

コード

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.show()

実行結果



2. 軸ラベル・グラフタイトルの表示

x軸のラベルを表示する場合は plt.xlabel 、y軸のラベルを表示する場合は plt.ylabel を指定する。

コード

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

実行結果



グラフタイトルを表示する場合は plt.title を指定する。

コード

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.title('sin curve')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

実行結果



3. 複数系列と凡例の表示

グラフに複数系列を表示するには plt.plot を系列の数だけ用意すればよい。
y_2としてcos(x)を追加した場合。

コード

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)
y_2 = np.cos(x)

plt.plot(x, y)
plt.plot(x, y_2)
plt.title('sin curve')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.show()

実行結果



凡例に系列名を表示するには plt.plot の引数として label を指定したうえで plt.legend() とする。

コード

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)
y_2 = np.cos(x)

plt.plot(x, y, label='sin curve')
plt.plot(x, y_2, label='cos curve')
plt.title('sin curve')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
plt.show()

実行結果



4. グリッド(目盛り)の表示

 グリッドを表示するには plt.gridとする。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 5, 0.1)
y = np.sin(x)
y_2 = np.cos(x)

plt.plot(x, y, label='sin curve')
plt.plot(x, y_2, label='cos curve')
plt.title('sin curve')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
plt.show()

実行結果



5. リファレンス

matplotlib > matplotlib.pyplot
matplotlib > matplotlib.pyplot.show
matplotlib > matplotlib.pyplot.xlabel
matplotlib > matplotlib.pyplot.ylabel
matplotlib > matplotlib.pyplot.title
matplotlib > matplotlib.pyplot.legend
matplotlib > matplotlib.pyplot.grid

使用バージョン:Python 3.7.0 / matplotlib 3.2.1