搭建一個和我的一樣的、穩(wěn)健的matplotlib繪圖平臺。
網(wǎng)上這一類的交流、總結(jié)文章已經(jīng)很多,我為什么還要專文來說這個事呢?你可能會說:不就是安裝Python、配置Python環(huán)境變量、安裝matplotlib及其依賴包嗎?
前些天,有一位網(wǎng)友求救,說他在matplotlib中繪圖,需要將圖像分辨率設(shè)置為 600dpi,但不管怎么操作就是沒有效果,他在圖像屬性中看到的圖片DPI始終只有96dpi
他把代碼發(fā)了過來,似乎沒有什么問題。我在jupyter lab中運(yùn)行這段代碼,生成'cm.jpeg'文件,在PS中查看圖像尺寸:
完全正確,分辨率就是預(yù)期的600dpi。
我讓把他看到的圖像屬性截圖給我看看,如下:
按照這個屬性參數(shù),很容易計(jì)算出,他電腦上的這張cm.jpeg圖像的物理尺寸是:
寬度 = 40英寸;
高度 = 30英寸。
mpl默認(rèn)的figsize是(6, 4)。他的代碼并沒有設(shè)置'figsize',但生成的圖像尺寸是(40,30) 英寸,這個尺寸太大了,顯然是在哪里修改了rcParams參數(shù),導(dǎo)致了他的苦惱。
如果你對上面的關(guān)于分辨率和圖像尺寸的關(guān)系不是很清楚,請重新閱讀第4,第5篇文章。
由于Python的開源性,各種開發(fā)包又很多,包之間的依賴性極其復(fù)雜,所以你的每一個操作都有可能影響整個開發(fā)平臺的穩(wěn)定性,甚至引發(fā)災(zāi)難性后果。
比如:
你在代碼中無意中修改了某個包的默認(rèn)參數(shù),再也得不到預(yù)期的結(jié)果;
你升級了某個包,但其它依賴于它的包還沒有對應(yīng)的升級包(你沒有升級,或者沒有可用的升級包),導(dǎo)致其它包運(yùn)行出錯;
等等....
所以,搭建一個穩(wěn)健的Python平臺非常重要。像你我這樣通過網(wǎng)絡(luò)交流,雙方保持測試環(huán)境的盡可能一致也是非常有好處的。
搭建Python平臺,目前從大方面來說,常見的主要有兩種方式:
直接安裝Python,使用pip安裝和管理平臺,需要用哪個包再安裝它;
通過安裝Anaconda,一次性安裝常用的庫,使用conda安裝和管理平臺。
第1種方式適合非常專業(yè)的人員,要求對Pyhton的包管理非常熟練,對包的依賴性有較深的了解,并且有很強(qiáng)的解決遇到的各種問題的能力。
像我這樣的草根推薦第2種方式。
Anaconda是以Python為核心,針對科學(xué)計(jì)算和機(jī)器學(xué)習(xí)而構(gòu)建的一個集成環(huán)境。
它以一個整潔的包裝給了我們使用Python所需的一切,讓我們可以專注于使用工具而不是維護(hù)它們。
首先,它在一個包裝中集成了Python科學(xué)計(jì)算和機(jī)器學(xué)習(xí)常用的庫;
其次,它使用conda安裝和管理環(huán)境,在下載、安裝、更新包時會自動分析你的系統(tǒng)和當(dāng)前環(huán)境,并自動處理包之間的依賴關(guān)系;
第三,它還提供一個導(dǎo)航器,讓我這樣的草根可以在圖形窗口管理環(huán)境;
第四,它還提供了spyder, prompt等附加工具,作為官方的IDE和Shell命令工具。
一句話,它的優(yōu)勢在于集成了我們使用Python的主要工具。
建議你按照下面的步驟從頭搭建一個穩(wěn)健的Python開發(fā)平臺,這樣你的測試環(huán)境和我的就基本一致了,各種代碼的測試結(jié)果也就會基本一致,也會避免出現(xiàn)莫名的問題。
登錄anaconda官網(wǎng) https://www.anaconda.com/distribution/#download-section
下載相應(yīng)的版本,我的操作系統(tǒng)是windows 10 64bit 的。
強(qiáng)烈建議下載 Python 3.7 版的,Python2 即將被放棄。
如果你過去一直使用Python 2 ,也不要擔(dān)心,轉(zhuǎn)到Python 3 真的很容易,并且從長遠(yuǎn)看是必須的,也是值得的。
像安裝其它windows程序一樣,雙擊運(yùn)行安裝,一路next,在指定安裝路徑時,建議設(shè)置如下:
其它都是默認(rèn)設(shè)置即可。
安裝結(jié)束后,程序菜單中會有一個Anaconda3文件夾。
需要進(jìn)行兩次配置,第一次:
如下圖,打開系統(tǒng)環(huán)境變量設(shè)置窗口:
雙擊 PATH
打開下面的窗口:
新建;
瀏覽;
找到左邊三個路徑
依次重復(fù)操作,即可將Anaconda的環(huán)境變量添加到系統(tǒng)中。
添加圖中左側(cè)的三個路徑到環(huán)境變量中
打開Anaconda Prompt命令行窗口:
輸入命令 : python,返回如下內(nèi)容:
表示Python安裝配置成功,我的Python版本是3.7.3.
輸入命令:conda,返回如下內(nèi)容:
表示 conda 管理工具安裝配置成功。
強(qiáng)烈建議:在上面的安裝測試完成后,先創(chuàng)建一個工作虛擬環(huán)境。再開始你的探索之旅!
前面說過,因?yàn)镻ython的開源性,包的依賴性復(fù)雜,在使用過程中,隨時都會破壞整個 Python 環(huán)境,導(dǎo)致出現(xiàn)一些莫名的問題和錯誤。
前面的安裝過程會創(chuàng)建一個base環(huán)境,如果直接在這個環(huán)境下工作、學(xué)習(xí)、測試,當(dāng)系統(tǒng)中的python環(huán)境出現(xiàn)問題無法修復(fù)時,就不得不卸載Anaconda,再重新安裝它。
如果我們創(chuàng)建一個新環(huán)境,工作、測試、學(xué)習(xí)都在這個環(huán)境下進(jìn)行,當(dāng)出現(xiàn)問題時,我們只需要刪除這個環(huán)境,再重新創(chuàng)建一個環(huán)境即可,這比從頭安裝Anaconda要節(jié)省時間。
當(dāng)然虛擬環(huán)境還有其它一些用途,不在我們的討論范圍內(nèi)。
啟動 Anaconda Prompt, 運(yùn)行如下命令:
conda create -n py373env python=3.7
創(chuàng)建一個名為 'py373env', Python版本為3.7的虛擬環(huán)境。
當(dāng)然,環(huán)境的名稱你可以根據(jù)喜好定,我習(xí)慣于這樣命名,一看就知道,這是一個Python的虛擬環(huán)境,并且Python版本是3.7.3。
需要一定的時間,它會下載、安裝一些包,創(chuàng)建你指定的環(huán)境,創(chuàng)建完成后。
在Anaconda Prompt中輸入:
激活‘py373env’環(huán)境。
可以發(fā)現(xiàn)命令行的引導(dǎo)符最右邊的括號中原來的base,變成了py373env,這就表示,你原來處在base環(huán)境中,現(xiàn)在轉(zhuǎn)到了py373env環(huán)境中。
你在哪個環(huán)境中的操作,主要影響這個環(huán)境。比如更新、安裝包,修改一些包的默認(rèn)參數(shù),只會影響該環(huán)境下的包,不會影響base環(huán)境。
我習(xí)慣于在jupyter lab中工作、學(xué)習(xí)、測試Python代碼,數(shù)據(jù)分析、數(shù)據(jù)可視化。
每天打開 Anaconda Prompt,輸入的第一行命令就是:
conda activate py373env
即,立即轉(zhuǎn)到我的 py373env 虛擬環(huán)境,確保我的操作都是在這個環(huán)境下。除非我非常清楚地知道我要在其它環(huán)境下工作,我才退出py373env環(huán)境,激活其它環(huán)境。
退出py373env環(huán)境,使用命令:
jupyter lab是jupyte notebook的替代計(jì)劃。
jupyter提供了在web中輸入、保存、運(yùn)行代碼,顯示結(jié)果.....的強(qiáng)大功能。
它集交互模式、IDE模式的優(yōu)點(diǎn)于一身。
是我測試Python代碼、進(jìn)行數(shù)據(jù)分析、matplotlib數(shù)據(jù)可視化的主要戰(zhàn)場。
下面將以在py373env虛擬環(huán)境中安裝、配置jupyter lab為例介紹 Anaconda的包安裝和管理。
Anaconda的官方下載通道是 conda-forge
有時會出現(xiàn)下載失敗,下載速度慢的問題,可以添加清華大學(xué)的鏡像服務(wù)器。
在'系統(tǒng)盤(c)-用戶---用戶名'目錄下有一個Anaconda的配置文件文件:.condarc
用記事本打開這個'.condarc'文件,刪除里面的內(nèi)容,將下面的內(nèi)容復(fù)制進(jìn)去,保存即可。
channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ - conda-forgeshow_channel_urls: truessl_verify: true
激活虛擬環(huán)境:
在py373env環(huán)境下,執(zhí)行命令:
conda install -c conda-forge jupyterlab
conda會自動分析你的環(huán)境,找到合適jupyterlab版本和包,下載安裝它們。
命令中的 '-c conda-forge'是指定從anaconda的官方鏡像下載安裝,這是推薦的方式。如果因網(wǎng)絡(luò)的問題,直接使用:
它會根據(jù)分析結(jié)果和網(wǎng)速選擇配置文件中列出的鏡像源中合適的通道下載鏡像。
安裝完成后,在py373env環(huán)境下,輸入:
jupyter lab
即可啟動jupyter lab。
jupyterlab有很多擴(kuò)展插件可用。安裝合適的插件,能夠使你的效率提高很多。
JupyterLab 的插件是 npm 安裝包。所以按照 JupyterLab 的插件,需要提前安裝好 Node.js。
安裝命令:
完成之后,有兩種方式進(jìn)行插件的安裝:
通過開啟 Extension Manager 來安裝和管理插件
通過執(zhí)行命令的方式安裝。 限于篇幅就不講了。
如果使用第一種方式,需要手動開啟 Extension Manager。
在jupytelab頁面,設(shè)置,高級設(shè)置 (command+逗號 ),選擇Extension Manager一欄,修改設(shè)置為 true:
這樣就可以使用Extension Manager來安裝jupyterlab的擴(kuò)展插件了。
可以搜索插件,安裝插件,對已安裝的插件啟用、禁用、卸載。
安裝好jupyter toc 目錄插件,就可以使用目錄在文檔中導(dǎo)航了。
是不是看起來還不錯?
一個穩(wěn)健的Python,matplotlib平臺搭建好了,后面就讓我們在這個平臺上煉身手吧!
因?yàn)槭遣莞鶄兊牟萏茫钥赡苡悬c(diǎn)太細(xì)了!但這會是我堅(jiān)持的風(fēng)格,盡可能讓各等級的草根都能看懂。