裝扮你的Jupyter

又到擺脫重複工做,換個心情,然而並無軟用的時間了。此次,教你們如何搭建一個好看的jupyter環境。css

安裝Jupyter

先來展現一下個人環境python

  • python: 3.5.*git

  • macos: 10.12.4github

安裝Jupyter的過程只需安裝Anaconda便可。shell

測試一下初始設置:macos

jupyter notebook

配置ipython

首先,若是每次你打開一個nb(notebook)時,若是都須要載入一些模塊,一個很好地方法就是配置ipython的配置文件,能夠直接使用如下命令建立配置文件:segmentfault

ipython profile create

此時你會在~/.ipython/profile_default/目錄中得到下面兩個文件:bash

  • ipython_config.py:打開任意ipython kernel時都會運行markdown

  • ipython_notebook_config.py:打開notebook時會運行網絡

配置方式是在所須要的配置文件中先鍵入:

c = get_config()

而後就能夠經過修改c的屬性來控制全部的配置。

顯然,對大多數分析場景,numpy, scipy, pandas是確定要載入的,所以,寫到配置中便可:

c.InteractiveShellApp.exec_lines = [
        "import pandas as pd",
        "import numpy as np",
        "import scipy.stats as spstats",
        "import scipy as sp",
        ]

配置matplotlib

還有一個經常使用功能就是matplotlibmatplotlib在notebook中須要使用

%matplotlib inline

纔可默認在notebook中顯示圖像,一個簡單地方法就是在配置文件中加入,

c.IPKernelApp.matplotlib = 'inline'

固然,默認也須要載入matplotlib

c.InteractiveShellApp.exec_lines = [
        "import pandas as pd",
        "import numpy as np",
        "import scipy.stats as spstats",
        "import scipy as sp",
        "import matplotlib.pyplot as plt"
        ]

固然,也能夠更多。但這樣可能會影響初始化notebook和ipython shell的速度,這個請你們本身權衡。

matplotlib顯示中文

此外,單獨拎matplotlib出來的另外一個緣由是,matplotlib還有一箇中文顯示的問題。

首先,解決編碼問題

python 2.7.*的解決方案是,在配置中加入:

import seaborn as sns
import sys# print sys.getdefaultencoding()# ipython notebook中默認是ascii編碼 
reload(sys)
sys.setdefaultencoding('utf8')

python 3.*出於某些緣由,不建議經過sys模塊修改編碼,緣由參見這裏

解決方案是,在shell的配置中從新設置配置變量(bash的話設置文件.bashrczsh則設置文件.zshrc)。方法是末尾添加:

export PYTHONIOENCODING="utf8"

固然另外一個方法是在啓動notebook時使用

PYTHONIOENCODING="utf8" & jupyter notebook

第二個是修改matplotlib的默認字體

首先咱們來看可使用的字體

import matplotlib.font_manager
fonts = matplotlib.font_manager.findSystemFonts()
l = []
for f in fonts:
    try:
        font =matplotlib.font_manager.FontProperties(fname=f)
        #print(font.get_family())
        l.append((f, font.get_name(), font.get_family(), font.get_weight()))
    except:
        pass
df = pd.DataFrame(l, columns=['path', 'name', 'family', 'weight'])
df

你應該看到下面這樣的表格:

clipboard.png

而後找到支持中文的字體名,而後設置matplotlib的默認字體:

import matplotlib as mpl
mpl.rc('font', family='Noto Sans CJK SC')

固然,你能夠添加到剛纔的配置中,或者採用這個博客的方法

此外,若是你使用seaborn的話,seaborn在設置配置時可能會覆蓋掉matplotlib,此時採用如下代碼便可:

import seaborn as sns
sns.set_style('ticks',
              {
                    'font.family': ['Noto Sans CJK SC'],
    })

可是,該語句不建議寫在配置中,由於常常須要修改,可能會覆蓋以前的配置。

matplotlib在Retina屏幕中顯示模糊問題

直接使用下面語句便可,

%config InlineBackend.figure_format = 'retina'

固然也可在配置中直接加入

c.InlineBackend.figure_format = 'retina'

修改notebook樣式

默認的notebook能夠逼你心中大喊WTF,這時候你須要一點CSS技能,修改~/.jupyter/custom/custom.css的內容。

我的認爲最須要修改的內容包括

  1. notebook的默認寬度:notebook默認比較寬,markdown文字會顯得比較少,若是須要對外展現,文字部分會過少。

  2. notebook的代碼字體

個人修改規則是:

pre.CodeMirror-line {
    font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif
}

.output_subarea.output_text.output_result>pre {
    font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif
}

.output_subarea.output_text.output_stream.output_stdout>pre {
    font-family: 'BlinkMacSystemFont', 'Lucida Grande', 'Segoe UI', Ubuntu, Cantarell, sans-serif
}

#notebook-container {
    max-width: 830px;
    padding: 40px;
}

安裝Jupyter經常使用插件

這裏推薦兩個jupyter插件:

插件管理器jupyter notebook extensions

github地址在這裏。安裝和介紹也能夠參考。

而後你就能夠在jupyter主頁裏找到下面的標籤頁管理插件了:

clipboard.png

jupyter Dashboard

若是你的jupyter服務是搭建在主機上,而且平時和業務人員想用notebook地址的方式交付,jupyter dashboard插件是一個不錯的選擇。

安裝方法和github地址在這裏

本來效果以下:

clipboard.png

點擊以下紅色設置,並點擊黃色按鈕後

clipboard.png

就可獲得以下的報告形式(刪去了業務人員不想查看的代碼),而後就能夠粘貼鏈接交付報告了:

clipboard.png

切換成dashboard模式能夠拖拽相關方格來設置位置。

安裝R kernel

R kernel安裝方式有兩個:

經過conda安裝

conda create -n R-Env -c r r-essentials
source activate R-Env
conda install jupyter

而後在R中配置

install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()

建議必定要新建環境,否則會和你以前安裝的R衝突。

固然,我不建議這種安裝方式,緣由是:

  1. 不是不少人想在電腦裏有兩個R環境

  2. 在jupyter notebook中不配置默認鏡像,是無法選擇鏡像的,這致使無法再notebook中直接安裝R包,固然你也能夠配置好默認CRAN鏡像,但這樣顯然很麻煩,切換網絡環境後也很難調整

  3. 可能你在舊環境中已經安裝了大量包,這樣子遷移成爲問題

  4. 你必須在這個新環境中啓動jupyter

直接使用本來安裝

直接在R環境中使用如下語句

install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()
IRkernel::installspec(user = FALSE)

設置Jupyter服務配置

這裏請作個區別:ipython是負責和python交互的部分,jupyter是做爲服務的部分。所以全部服務配置都要在~/.jupyter中進行,而和python、模塊相關的配置都要在~/.ipython中。

這裏主要配置的有ip和默認文件夾。

首先,生成配置文件:

jupyter notebook --generate-config

如今~/.jupyter/內就生成jupyter_notebook_config.py文件。

再次咱們設置ip,在其中添加,這樣就能夠外網訪問。

NotebookApp.ip = '127.0.0.1'

最後,加上默認啓動位置,這樣,在任何工做目錄下都能保證,notebook的啓動位置一致。

NotebookApp.notebook_dir = '/jupyter'

大功告成,如今開工!

==================================

更新日誌

  • 2017-5-10

    1. 增長R kernel安裝討論

    2. 增長jupyter服務配置

相關文章
相關標籤/搜索