Tokyo scipy

2,573 views
2,344 views

Published on

Published in: Technology, Business
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,573
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
46
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Tokyo scipy

  1. 1. matplotlibでグラフ作成~PRMLバイ アス-バリアンス分解より~ Tokyo.SciPy #1 11/08/28 id:(t)yatsuta
  2. 2. What is matplotlib?"matplotlib is a library for making 2D plots ofarrays in Python. Although it has its origins inemulating the MATLAB® graphics commands,it is independent of MATLAB, and can be usedin a Pythonic, object oriented way. Althoughmatplotlib is written primarily in pure Python, itmakes heavy use of NumPy and other extensioncode to provide good performance even forlarge arrays."(http://matplotlib.sourceforge.net/users/intro.html)
  3. 3. (おことわり)● 以下のスライドでは、matplotlibの使い方を ipythonのセッションとして記述しています。● もっとも明示的で冗長な記法を採用しています。そ の他の記法についてはドキュメントをご参照くださ い。● 本家の記法から多少逸脱している箇所があります。 ご了承ください。
  4. 4. お約束importIn : import scipy as spIn : import matplotlib.pyplot as plt
  5. 5. グラフ描画の基本In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.plot([1,2,3], [4,5,6])Out: [<matplotlib.lines.Line2D objectat 0xa304fcc>]In : plt.show()
  6. 6. Figureオブジェクト(fig)AxesSubplotオブジェクト(ax)
  7. 7. linspace関数とarrayオブジェクトIn : xs = sp.linspace(0, 1, 20+1)In : xsOut:array([ 0. , 0.05, 0.1 , 0.15, 0.2 , 0.25, 0.3 , 0.35, 0.4 , 0.45, 0.5 , 0.55, 0.6 , 0.65, 0.7 , 0.75, 0.8 , 0.85, 0.9 , 0.95, 1. ])(注: ドキュメントではarange(rangeのarray版)がよく使われている。端点を含むのが@tyatsutaの好み)
  8. 8. ベクトル化関数(その1)In : sp.exp(xs)Out:array([ 1. , 1.0512711 , 1.10517092, ... 2.71828183])I
  9. 9. ベクトル化関数(その2)In : def sin2pix(xs):...: return sp.sin(2 * sp.pi * xs)...:In : sin2pix(xs)Out:array([ 0.00000000e+00, 3.09016994e-01, ... -3.09016994e-01, -2.44921271e-16])I
  10. 10. ベクトル化関数(その3)In : sin2pix(xs) - 0.3Out:array([-0.3 , 0.00901699, … -0.60901699, -0.3 ])
  11. 11. プロット(点)In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.plot(xs, sin2pix(xs), "bo")Out: [<matplotlib.lines.Line2D object at 0xa017dec>]In : plt.show()
  12. 12. プロット(線)In : fine_xs = sp.linspace(0, 1, 100+1)In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.plot(fine_xs, sin2pix(fine_xs),"b-")Out: [<matplotlib.lines.Line2D object at0xa18438c>]In : plt.show()
  13. 13. 領域In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.fill_between(fine_xs, sin2pix(fine_xs) - 0.3, # 下限 sin2pix(fine_xs) + 0.3, # 上限 color="green", alpha=0.2)Out: <matplotlib.collections.PolyCollection object at 0xa23e1cc>In : plt.show()
  14. 14. エラーバーIn : err = sp.random.uniform(0, 1, 20+1)In : errOut:array([ 0.97839952, 0.01823584, 0.87341734, ... 0.13926259])
  15. 15. エラーバー(続き)In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.errorbar(xs, sin2pix(xs), fmt="r.", yerr=err)Out: ...In : plt.show()
  16. 16. 複数要素の描画In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.plot(fine_xs, sin2pix(fine_xs), "b-")In : ax.fill_between(fine_xs, sin2pix(fine_xs) – 0.3, sin2pix(fine_xs) + 0.3, color="green", alpha=0.2)In : ax.plot(xs, sin2pix(xs), "bo")In : ax.errorbar(xs, sin2pix(xs), yerr=err, fmt="r.")In : ax.axis([0, 1, -1.5, 1.5])In : plt.show()
  17. 17. 複数サブプロットIn : fig = plt.figure()In : ax1 = fig.add_subplot(211)In : ax2 = fig.add_subplot(212)In : ax1.plot(xs, sin2pix(xs), "bo")Out: [<matplotlib.lines.Line2D...In : ax2.plot(fine_xs, sin2pix(fine_xs), "r-")Out: [<matplotlib.lines.Line2D...In : plt.show()
  18. 18. 1 (2,1,1) = 2112 (2,1,2) = 212
  19. 19. 画像として保存In : fig = plt.figure()In : ax = fig.add_subplot(111)In : ax.plot(xs, sin2pix(xs), "bo")Out: [<matplotlib.lines.Line2D ...In : plt.savefig("/dev/shm/sin2pix.png")In : plt.close()
  20. 20. (/dev/shm/sin2pix.png)
  21. 21. その他● タイトルを付ける ● suptitleメソッド(Figure) ● set_titleメソッド(AxesSubplot)● ラベルを付ける ● set_xlabel, set_ylabelメソッド(AxesSubplot)● レジェンド ● legendメソッド(AxesSubplot) – plotメソッド内でlabelキーワード引数で内容を指定しておく● などなど。詳細はドキュメントをご参照ください。
  22. 22. 本日のコード● https://gist.github.com/1175991

×