専門ユニット2/山内研セミナー(2020/10/21)

関連サイトと資料

仮想環境labo2020へのmatplotlibのインストール

  1. 下の図の赤丸をクリックして、コマンドプロンプトを開いてください。


  2. 下の図のように、コマンド「conda activate labo2020」と入力して、エンターキーを押してください。これで、仮想環境「labo2020」に移行しました。


  3. 下の図のように、コマンド「pip install matplotlib」と入力して、エンターキーを押してください。これで、matplotlibのインストールが完了しました。


3.1 matplotlib

test1.py()
from matplotlib import pyplot as plt
  
years = [1950, 1960, 1970, 1980, 1990, 2000, 2010]
gdp = [300.2, 543.3, 1075.9, 2862.5, 5979.6, 10289.7, 14958.3]
  
# 折れ線グラフを作る。X軸を年、Y軸をGDPとする
plt.plot(years, gdp, color='green', marker='o', linestyle='solid')
   
# タイトルを追加する
plt.title("Nominal GDP")
  
# Y軸にラベルを追加する
plt.ylabel("Billions of $")
plt.show()
    

3.2 棒グラフ

test2.py()
from matplotlib import pyplot as plt
   
movies = ["Annie Hall", "Ben-Hur", "Casablanca", "Gandhi", "West Side Story"]
num_oscars = [5, 11, 3, 8, 10]
   
# X座標[0,1,2,3,4]で高さ[num_oscars]の棒グラフをプロットする
plt.bar(range(len(movies)), num_oscars)
   
plt.title("My Favorite Movies")     # タイトルを追加する
plt.ylabel("# of Academy Awards")   # Y軸にラベルを追加する
   
# 棒の中心に合わせて映画の名前をX軸のラベルにする
plt.xticks(range(len(movies)), movies)
plt.show()
    

test3.py()
from matplotlib import pyplot as plt
from collections import Counter
  
grades = [83, 95, 91, 87, 70, 0, 85, 82, 100, 67, 73, 77, 0]
  
# 点数を十分位数でグループ化する。ただし100点は90点台に含める
histogram = Counter(min(grade // 10 * 10, 90) for grade in grades)
   
plt.bar([x + 5 for x in histogram.keys()],  # グラフの棒を右に5ずらす
        histogram.values(),                 # 値に合わせた高さに設定
        10,                                 # 棒の幅を10にする
        edgecolor=(0, 0, 0))                # 棒の枠線を黒にする
   
plt.axis([-5, 105, 0, 5])                  # X軸の範囲を-5から105とする
                                           # Y軸の範囲を0から5とする
   
plt.xticks([10 * i for i in range(11)])    # # X軸のラベルを0, 10, ..., 100に設定
plt.xlabel("Decile")
plt.ylabel("# of Students")
plt.title("Distribution of Exam 1 Grades")
plt.show()
    

test4.py()
from matplotlib import pyplot as plt
  
mentions = [500, 505]
years = [2017, 2018]
   
plt.bar(years, mentions, 0.8)
plt.xticks(years)
plt.ylabel("# of times I heard someone say 'data science'")
   
# 次の行を省略すると、0,1と共に+2.013e3がX軸上に
# 表示されてしまう(matplotlibの欠点である)
plt.ticklabel_format(useOffset=False)
  
# Y軸の500以上の部分だけを表示すると、誤った印象を与える
plt.axis([2016.5, 2018.5, 499, 506])
plt.title("Look at the 'Huge' Increase!")
plt.show()
    

test5.py()
from matplotlib import pyplot as plt
  
mentions = [500, 505]
years = [2017, 2018]
   
plt.bar(years, mentions, 0.8)
plt.xticks(years)
plt.ylabel("# of times I heard someone say 'data science'")
   
# 次の行を省略すると、0,1と共に+2.013e3がX軸上に
# 表示されてしまう(matplotlibの欠点である)
plt.ticklabel_format(useOffset=False)
   
plt.axis([2016.5, 2018.5, 0, 550])
plt.title("Not So Huge Anymore")
plt.show()
    

3.3 折れ線グラフ

test6.py()
from matplotlib import pyplot as plt
   
variance     = [1, 2, 4, 8, 16, 32, 64, 128, 256]
bias_squared = [256, 128, 64, 32, 16, 8, 4, 2, 1]
total_error  = [x + y for x, y in zip(variance, bias_squared)]
xs = [i for i, _ in enumerate(variance)]
   
# plt.plotを複数回呼び出して、1つのグラフに複数の線を描画可能
plt.plot(xs, variance,     'g-',  label='variance')    # 緑の実線
plt.plot(xs, bias_squared, 'r-.', label='bias^2')      # 赤の点線
plt.plot(xs, total_error,  'b:',  label='total error') # 青の点線
   
# 各線にラベルを指定しているので、凡例が自動で描かれる。
# loc=9は「上部中央」を示す
plt.legend(loc=9)
plt.xlabel("model complexity")
plt.xticks([])
plt.title("The Bias-Variance Tradeoff")
plt.show()
    

3.4 散布図

test7.py()
from matplotlib import pyplot as plt
   
friends = [ 70,  65,  72,  63,  71,  64,  60,  64,  67]
minutes = [175, 170, 205, 120, 220, 130, 105, 145, 190]
labels =  ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
   
plt.scatter(friends, minutes)
  
# 各点のラベル
for label, friend_count, minute_count in zip(labels, friends, minutes):
  plt.annotate(label,
    xy=(friend_count, minute_count), # 各点にラベルを付加する
    xytext=(5, -5),                  # ただし、位置は少し横にずらす
    textcoords='offset points')
  
plt.title("Daily Minutes vs. Number of Friends")
plt.xlabel("# of friends")
plt.ylabel("daily minutes spent on the site")
plt.show()
    

test8.py()
from matplotlib import pyplot as plt
  
test_1_grades = [ 99, 90, 85, 97, 80]
test_2_grades = [100, 85, 60, 90, 70]
   
plt.scatter(test_1_grades, test_2_grades)
plt.title("Axes Aren't Comparable")
plt.xlabel("test 1 grade")
plt.ylabel("test 2 grade")
plt.show()
    

test9.py()
from matplotlib import pyplot as plt
  
test_1_grades = [ 99, 90, 85, 97, 80]
test_2_grades = [100, 85, 60, 90, 70]
  
plt.scatter(test_1_grades, test_2_grades)
plt.title("Axes Are Comparable")
plt.axis("equal")
plt.xlabel("test 1 grade")
plt.ylabel("test 2 grade")
plt.show()
    

仮想環境labo2020へのnotebook, ipykernelのインストール

  1. 下の図の赤丸をクリックして、コマンドプロンプトを開いてください。


  2. 下の図のように、コマンド「conda activate labo2020」と入力して、エンターキーを押してください。これで、仮想環境「labo2020」に移行しました。


  3. 下の図のように、コマンド「pip install notebook ipykernel」と入力して、エンターキーを押してください。これで、インストールが完了しました。


VSCodeにおけるJupyter Notebookの作成

  1. コントロールキーとシフトキーと「p」キーを同時に押して、コマンドパレットを表示します。そして、上部のテキストボックスに「python: create New」と入力します。


  2. 表示された「Python: Create New Blank Jupyter Notebook」をクリックします。
  3. すると、下の図のように空のJupyter Notebookが表示されます。


  4. 最初のセルに、「%matplotlib inline」と入力して、赤丸で囲まれた三角ボタンをクリックします。これで、セルの内容が実行され、次にコードを入力できるセルが新しく作成されます。


  5. 次のセルに、本日最初に作成したサンプルコードの最後の「plt.show()」以外を入力します(コピペでOK!)。そして、赤丸で囲まれた三角ボタンをクリックします。

  6. 上部の赤丸で囲まれた「保存」ボタンをクリックするとダイアログが表示されるので、拡張子を省いたファイル名を入力して「Save」ボタンをクリックする。