Last active
September 19, 2016 11:35
-
-
Save ged1959/fcd4cc4b67dda0004bb205638654e0f8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"# 解読「Python & Jupyterでデータ解析入門」\n", | |
"\n", | |
"<div style=\"text-align: right;\">\n", | |
"2016.9.18:\n", | |
"</div>\n", | |
"\n", | |
"日経Linuxで、2016.9から表記の連載が始まった。記事の通り触ってみると、Jupyterいいなぁ、と思い始めた。\n", | |
"\n", | |
"これまでCloud9で環境を構築していたが、コードをファイルで管理しなくてはいけない。特に大変なのは、matplotlibで描画したら、ファイルとして出力しなくてはいけないことだ。\n", | |
"\n", | |
"これはこれで役に立つことがあるかもしれないが、より便利で簡単な方法を探るのが、コーダーとしては基本的な心がけ。という訳で、しばらくJupyterを触ってみよう。\n", | |
"\n", | |
"ファンも多い。[現代のエンジニアのための強力なメモ帳 Jupyter notebookのすゝめ \\- クックパッド開発者ブログ](http://techlife.cookpad.com/entry/write-once-share-anywhare)のように、楽しい解説もある。\n", | |
"\n", | |
"取りあえず、連載が紹介している、cloud上でJupyterが使えるサイト「[Project Jupyter](http://jupyter.org/)」を使い倒してみよう。\n", | |
"\n", | |
"以下に関連リンク。\n", | |
"\n", | |
"1. [Jupyter Notebookを利用してお手軽分析環境構築 \\| DATUM STUDIO 株式会社](https://datumstudio.jp/backstage/795)\n", | |
"2. [Jupyter nbconvert(ファイル変換)メモ \\- はしくれエンジニアもどきのメモ](http://cartman0.hatenablog.com/entry/2016/03/29/131903)\n", | |
"3. [Jupyter Notebook を使ってみよう – Python でデータサイエンス](http://pythondatascience.plavox.info/python%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83/jupyter-notebook%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86/)\n", | |
"\n", | |
"## 課題もある\n", | |
"\n", | |
"コーディングの環境設定ではつきものだが、例によって、独自の設定が必要になる。上記の連載2回目のコードも、そのままでは動かない。盛大にエラーが吐き出される。(**Localにインストールした場合は違うかもしれない。別ウィンドウでシンプルに描画される可能性もあるが、試していない。**)\n", | |
"\n", | |
"以下のコード。(オリジナルはデータが多すぎるので、簡易化したもの)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 3, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"/opt/conda/lib/python3.5/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", | |
" warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n", | |
"/opt/conda/lib/python3.5/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.\n", | |
" warnings.warn('Matplotlib is building the font cache using fc-list. This may take a moment.')\n" | |
] | |
}, | |
{ | |
"ename": "RuntimeError", | |
"evalue": "Invalid DISPLAY variable", | |
"output_type": "error", | |
"traceback": [ | |
"\u001b[1;31m\u001b[0m", | |
"\u001b[1;31mRuntimeError\u001b[0mTraceback (most recent call last)", | |
"\u001b[1;32m<ipython-input-3-cb6ff15229f2>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0my\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;36m4\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m6\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;36m8\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0my\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 3145\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0m_autogen_docstring\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mAxes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3146\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 3147\u001b[1;33m \u001b[0max\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mgca\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 3148\u001b[0m \u001b[1;31m# allow callers to override the hold state by passing hold=True|False\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3149\u001b[0m \u001b[0mwashold\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mishold\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mgca\u001b[1;34m(**kwargs)\u001b[0m\n\u001b[0;32m 926\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mFigure\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgca\u001b[0m \u001b[1;33m:\u001b[0m \u001b[0mThe\u001b[0m \u001b[0mfigure\u001b[0m\u001b[0;31m'\u001b[0m\u001b[0ms\u001b[0m \u001b[0mgca\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 927\u001b[0m \"\"\"\n\u001b[1;32m--> 928\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mgcf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgca\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 929\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 930\u001b[0m \u001b[1;31m# More ways of creating axes:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mgcf\u001b[1;34m()\u001b[0m\n\u001b[0;32m 576\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mfigManager\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 577\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 578\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 579\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 580\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/pyplot.py\u001b[0m in \u001b[0;36mfigure\u001b[1;34m(num, figsize, dpi, facecolor, edgecolor, frameon, FigureClass, **kwargs)\u001b[0m\n\u001b[0;32m 525\u001b[0m \u001b[0mframeon\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mframeon\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 526\u001b[0m \u001b[0mFigureClass\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mFigureClass\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 527\u001b[1;33m **kwargs)\n\u001b[0m\u001b[0;32m 528\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 529\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfigLabel\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt4agg.py\u001b[0m in \u001b[0;36mnew_figure_manager\u001b[1;34m(num, *args, **kwargs)\u001b[0m\n\u001b[0;32m 44\u001b[0m \u001b[0mFigureClass\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'FigureClass'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mFigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 45\u001b[0m \u001b[0mthisFig\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mFigureClass\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 46\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mnew_figure_manager_given_figure\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnum\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mthisFig\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 47\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt4agg.py\u001b[0m in \u001b[0;36mnew_figure_manager_given_figure\u001b[1;34m(num, figure)\u001b[0m\n\u001b[0;32m 51\u001b[0m \u001b[0mCreate\u001b[0m \u001b[0ma\u001b[0m \u001b[0mnew\u001b[0m \u001b[0mfigure\u001b[0m \u001b[0mmanager\u001b[0m \u001b[0minstance\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mgiven\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 52\u001b[0m \"\"\"\n\u001b[1;32m---> 53\u001b[1;33m \u001b[0mcanvas\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mFigureCanvasQTAgg\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 54\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mFigureManagerQT\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mcanvas\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnum\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 55\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt4agg.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, figure)\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'FigureCanvasQtAgg: '\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 76\u001b[1;33m \u001b[0mFigureCanvasQT\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 77\u001b[0m \u001b[0mFigureCanvasQTAggBase\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[0mFigureCanvasAgg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt4.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, figure)\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mDEBUG\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 67\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'FigureCanvasQt qt4: '\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfigure\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 68\u001b[1;33m \u001b[0m_create_qApp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 69\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 70\u001b[0m \u001b[1;31m# Note different super-calling style to backend_qt5\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/opt/conda/lib/python3.5/site-packages/matplotlib/backends/backend_qt5.py\u001b[0m in \u001b[0;36m_create_qApp\u001b[1;34m()\u001b[0m\n\u001b[0;32m 136\u001b[0m \u001b[0mdisplay\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mos\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0menviron\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'DISPLAY'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 137\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdisplay\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32mor\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mre\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msearch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m':\\d'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdisplay\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 138\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mRuntimeError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Invalid DISPLAY variable'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 139\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 140\u001b[0m \u001b[0mqApp\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mQtWidgets\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mQApplication\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mstr\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\" \"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;31mRuntimeError\u001b[0m: Invalid DISPLAY variable" | |
] | |
} | |
], | |
"source": [ | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"x = [1, 2, 3]\n", | |
"y = [4, 6, 8]\n", | |
"\n", | |
"plt.plot(x, y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"一行だけ書き加える必要がある。例えば、以下のサイトから。\n", | |
"\n", | |
"4. [jupyter \\(ipython\\) notebook でグラフが出ない時の対応方法 \\- Qiita](http://qiita.com/polikeiji/items/c6a11c16a0587705c887)\n", | |
"5. [python \\- in Ipython notebook, Pandas is not displying the graph I try to plot\\. \\- Stack Overflow](http://stacko\n", | |
"6. [%matplotlib inlineを毎回書かなくて済む方法 \\- Qiita](http://qiita.com/nogut0123/items/2c83e30e274e5a51cb41)verflow.com/questions/10511024/in-ipython-notebook-pandas-is-not-displying-the-graph-i-try-to-plot)\n", | |
"7. [%matplotlib inlineを毎回書かなくて済む方法 \\- Qiita](http://qiita.com/nogut0123/items/2c83e30e274e5a51cb41)\n", | |
"8. [iPython Notebookの\\-\\-pylab inlineは使うのをやめようという話 \\- Wolfeyes Bioinformatics beta](http://yagays.github.io/blog/2014/08/15/ipython-notebook-matplotlib-inline/)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 7, | |
"metadata": { | |
"collapsed": false | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"[<matplotlib.lines.Line2D at 0x7f1d6e420160>]" | |
] | |
}, | |
"execution_count": 7, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"data": { | |
"image/png": "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\nu6R5s+RnwHqXtCgs+ZZZ75IWiSXfEutd0iKy5FtgvUtaVJb8FKx3SYvOkp+Q9S5pGVjyY7LeJS0T\nS34M1rukZdO45JNckOSpJA9vsu9AklcH+59K8hvtTnO+rHdJy2qckr8TeBZ47xb7v15VN04/pcVi\nvUtaZo1KPsmlwA3AF7cb1sqMFoT1LqkLmpb87wCfAfZuM+b6JGeBc8BnqurZaSc3L9a7pK7YseST\nfBJYr6qzbNT6ZsX+JPD+qroK+K/Ag63OcpdY75K6pknJfxS4MckNwEXAjya5v6o+/daAqnpt6P5X\nk/xukvdV1SujT7a2tnb+fq/Xo9frTTH99ljvkhZFv9+n3++38lypquaDkwPAr43+gjXJvqpaH9y/\nFjhVVR/Y5OdrnNfbDVVw6hTceSccOgTHjsGePfOelST9oyRU1US/95z4ffJJDgNVVfcCNyf5VeD7\nwD8At0z6vLvJepfUdWOV/NQvtiAlb71LWiZzKfllZb1LWiUr8901vnNG0ipaiZK33iWtqk6XvPUu\nadV1tuStd0nqYMlb75L0jzpV8ta7JL1dJ0reepekzS19yVvvkrS1pS15612SdraUJW+9S1IzS1Xy\n1rskjWdpSt56l6TxLXzJW++SNLmFLnnrXZKms5Alb71LUjsWruStd0lqz8KUvPUuSe1biJK33iVp\nNhqXfJILkjyV5OEt9t+d5C+SnE1yVZPntN4labbGWa65E3h2sx1JDgL7q+py4DBwfKcne/ll+NSn\nYG1to95/67f8x7TH1e/35z2FTvF4tsdjuTgaXeSTXArcAHxxiyE3AfcDVNVpYG+SfZsNtN7b4/9I\n7fJ4tsdjuTiarsn/DvAZYO8W+y8BXhp6fG6wbX104Kc+5dq7JO2WHUs+ySeB9ao6C2Rwm5j1Lkm7\nJ1W1/YDk88C/A34AXAT8KPBAVX16aMxx4LGqOjl4/DxwoKrWR55r+xeTJG2qqiYK7B0v8m8bnBwA\nfq2qbhzZfgNwR1V9Msl1wF1Vdd0kE5IktWfi98knOQxUVd1bVY8muSHJC8DrwL9vbYaSpImNVfKS\npOXS+tcaJPlvSdaTfHObMWN/cGpV7XQ8kxxI8urgg2pPJfmN3Z7jskhyaZL/meSZJH+e5MgW4zw/\nG2hyPD0/m0vyI0lOJzkzOJ5Htxg33vlZVa3egI8BVwHf3GL/QeCRwf2PAE+0PYcu3RoczwPAw/Oe\n5zLcgH8OXDW4/x7g/wD/cmSM52e7x9Pzc7xjevHgvz8EPAFcO7J/7POz9ZKvqseB/7fNkMYfnFKj\n4wlTvq11VVTV39TGW4GpqteA59j4PMcwz8+GGh5P8PxsrKreGNz9ETZ+Zzq6nj72+TmPb6Hc6oNT\nmtz1g7+6PZLkynlPZhkk+QAbf0M6PbLL83MC2xxP8PxsbPAdYWeAvwG+VlXfGBky9vm5EN9Cqak8\nCby/qt4YfIfQg8AVc57TQkvyHuAPgDsHBaop7HA8PT/HUFVvAlcneS/wYJIrq2rT7wxrah4lfw74\niaHHlw62aQJV9dpbf8Wrqq8C70ryvjlPa2EluZCNC9KXquqhTYZ4fo5hp+Pp+TmZqvoe8Bjw8yO7\nxj4/Z3WR3+7rDx4GPg0w+ODUqzXyyVi9w5bHc3g9Lsm1bLwt9pXdmtgS+u/As1X1hS32e36OZ9vj\n6fnZXJJ/lmTv4P5FwL8Gnh8ZNvb52fpyTZLfB3rAP03yHeAo8MP4wamJ7HQ8gZuT/CrwfeAfgFvm\nNddFl+SjwL8F/nyw7lnAfwZ+Es/PsTU5nnh+juNfAL+X5AI2Avzk4Hyc6oOnfhhKkjpsYf6NV0lS\n+7zIS1KHeZGXpA7zIi9JHeZFXpI6zIu8JHWYF3lJ6jAv8pLUYf8f6vlq2OdTOTQAAAAASUVORK5C\nYII=\n", | |
"text/plain": [ | |
"<matplotlib.figure.Figure at 0x7f1d6f2f2ac8>" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"# 以下の一行を追加。\n", | |
"%matplotlib inline\n", | |
"\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"x = [1, 2, 3]\n", | |
"y = [4, 6, 8]\n", | |
"\n", | |
"plt.plot(x, y)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": {}, | |
"source": [ | |
"## 追記1\n", | |
"\n", | |
"以下のように、Jupyterをcloud9に入れておく手もある。拡張機能を使えるなど利点もありそうだ。\n", | |
"\n", | |
"1. [Cloud9で簡単Jupyter環境構築 \\- Qiita](http://qiita.com/y__sama/items/58419e85f39265fe6df8)\n", | |
"2. [extensionを追加してもっと快適なJupyter環境を構築する \\- Qiita](http://qiita.com/sasaki77/items/30a19d2be7d94116b237)\n", | |
"\n", | |
"## 追記2\n", | |
"\n", | |
"GitHub、Gistに上げておくこともできる。以下。\n", | |
"\n", | |
"1. [GitHub Gistを使ってブログにJupyter\\(IPython\\) Notebookを表示する方法](http://p--q.blogspot.jp/2015/10/github-gistjupyteripython-notebook.html)\n", | |
"2. [Jupyter NotebookをGitHub上で公開する \\- abcdefg\\.\\.\\.\\.\\.](http://pppurple.hatenablog.com/entry/2016/06/11/194713)" | |
] | |
} | |
], | |
"metadata": { | |
"kernelspec": { | |
"display_name": "Python 3", | |
"language": "python", | |
"name": "python3" | |
}, | |
"language_info": { | |
"codemirror_mode": { | |
"name": "ipython", | |
"version": 3 | |
}, | |
"file_extension": ".py", | |
"mimetype": "text/x-python", | |
"name": "python", | |
"nbconvert_exporter": "python", | |
"pygments_lexer": "ipython3", | |
"version": "3.5.1" | |
}, | |
"widgets": { | |
"state": {}, | |
"version": "1.1.2" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment