日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

 星光閃亮圖書館 2019-08-30

搭建一個和我的一樣的、穩(wěn)健的matplotlib繪圖平臺。

網(wǎng)上這一類的交流、總結(jié)文章已經(jīng)很多,我為什么還要專文來說這個事呢?你可能會說:不就是安裝Python、配置Python環(huán)境變量、安裝matplotlib及其依賴包嗎?

從一個小故事看matplotlib平臺穩(wěn)健性

前些天,有一位網(wǎng)友求救,說他在matplotlib中繪圖,需要將圖像分辨率設(shè)置為 600dpi,但不管怎么操作就是沒有效果,他在圖像屬性中看到的圖片DPI始終只有96dpi

%matplotlib inlineimport numpy as npimport matplotlibimport matplotlib.pyplot as plt# sphinx_gallery_thumbnail_number = 2# 蔬菜種類vegetables = ['cucumber', 'tomato', 'lettuce', 'asparagus', 'potato', 'wheat', 'barley']# 農(nóng)夫名字farmers = ['Farmer Joe', 'Upland Bros.', 'Smith Gardening', 'Agrifun', 'Organiculture', 'BioGoods Ltd.', 'Cornylee Corp.']# 收成harvest = np.array([[0.8, 2.4, 2.5, 3.9, 0.0, 4.0, 0.0], [2.4, 0.0, 4.0, 1.0, 2.7, 0.0, 0.0], [1.1, 2.4, 0.8, 4.3, 1.9, 4.4, 0.0], [0.6, 0.0, 0.3, 0.0, 3.1, 0.0, 0.0], [0.7, 1.7, 0.6, 2.6, 2.2, 6.2, 0.0], [1.3, 1.2, 0.0, 0.0, 0.0, 3.2, 5.1], [0.1, 2.0, 0.0, 1.4, 0.0, 1.9, 6.3]])# fig, ax = plt.subplots()fig = plt.figure(dpi=600)ax = fig.add_subplot(1,1,1)im = ax.imshow(harvest)# 設(shè)置x,y坐標(biāo)長度ax.set_xticks(np.arange(len(farmers)))ax.set_yticks(np.arange(len(vegetables)))# x,y具體標(biāo)簽ax.set_xticklabels(farmers)ax.set_yticklabels(vegetables)# x軸標(biāo)簽旋轉(zhuǎn)45°顯示plt.setp(ax.get_xticklabels(), rotation=45, ha='right', rotation_mode='anchor')# 顯示每個方格的值for i in range(len(vegetables)): for j in range(len(farmers)): text = ax.text(j, i, harvest[i, j], ha='center', va='center', color='w')ax.set_title('Harvest of local farmers (in tons/year)')fig.tight_layout()plt.savefig('cm.jpeg',dpi = 600)plt.show()

他把代碼發(fā)了過來,似乎沒有什么問題。我在jupyter lab中運(yùn)行這段代碼,生成'cm.jpeg'文件,在PS中查看圖像尺寸:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

完全正確,分辨率就是預(yù)期的600dpi。

我讓把他看到的圖像屬性截圖給我看看,如下:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

按照這個屬性參數(shù),很容易計算出,他電腦上的這張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平臺,目前從大方面來說,常見的主要有兩種方式:

  1. 直接安裝Python,使用pip安裝和管理平臺,需要用哪個包再安裝它;

  2. 通過安裝Anaconda,一次性安裝常用的庫,使用conda安裝和管理平臺。

第1種方式適合非常專業(yè)的人員,要求對Pyhton的包管理非常熟練,對包的依賴性有較深的了解,并且有很強(qiáng)的解決遇到的各種問題的能力。

像我這樣的草根推薦第2種方式。

Anaconda是什么,有什么優(yōu)勢?

Anaconda是以Python為核心,針對科學(xué)計算和機(jī)器學(xué)習(xí)而構(gòu)建的一個集成環(huán)境。

它以一個整潔的包裝給了我們使用Python所需的一切,讓我們可以專注于使用工具而不是維護(hù)它們。

  • 首先,它在一個包裝中集成了Python科學(xué)計算和機(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

登錄anaconda官網(wǎng) https://www./distribution/#download-section

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

下載相應(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è)置如下:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

其它都是默認(rèn)設(shè)置即可。

安裝結(jié)束后,程序菜單中會有一個Anaconda3文件夾。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

配置環(huán)境變量

需要進(jìn)行兩次配置,第一次:

如下圖,打開系統(tǒng)環(huán)境變量設(shè)置窗口:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

雙擊 PATH

打開下面的窗口:

  1. 新建;

  2. 瀏覽;

  3. 找到左邊三個路徑

依次重復(fù)操作,即可將Anaconda的環(huán)境變量添加到系統(tǒng)中。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

添加圖中左側(cè)的三個路徑到環(huán)境變量中

測試Python和conda是否安裝配置成功

打開Anaconda Prompt命令行窗口:

輸入命令 : python,返回如下內(nèi)容:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

表示Python安裝配置成功,我的Python版本是3.7.3.

輸入命令:conda,返回如下內(nèi)容:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

表示 conda 管理工具安裝配置成功。

創(chuàng)建工作虛擬環(huán)境

強(qiáng)烈建議:在上面的安裝測試完成后,先創(chuàng)建一個工作虛擬環(huán)境。再開始你的探索之旅!

為什么要工作創(chuàng)建虛擬環(huán)境?

前面說過,因為Python的開源性,包的依賴性復(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)。

創(chuàng)建工作虛擬環(huán)境

啟動 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中輸入:

conda activate py373env

激活‘py373env’環(huán)境。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

可以發(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)境。

將虛擬環(huán)境也添加到系統(tǒng)環(huán)境變量中

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

養(yǎng)成立即激活工作虛擬環(huán)境的好習(xí)慣

我習(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)境,使用命令:

conda deactivate

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

推薦 jupyter lab

jupyter lab是jupyte notebook的替代計劃。

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的包安裝和管理。

設(shè)置conda的下載鏡像源(即下載通道)

Anaconda的官方下載通道是 conda-forge

有時會出現(xiàn)下載失敗,下載速度慢的問題,可以添加清華大學(xué)的鏡像服務(wù)器。

在'系統(tǒng)盤(c)-用戶---用戶名'目錄下有一個Anaconda的配置文件文件:.condarc

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

用記事本打開這個'.condarc'文件,刪除里面的內(nèi)容,將下面的內(nèi)容復(fù)制進(jìn)去,保存即可。

channels: - https://mirrors.tuna./anaconda/cloud/msys2/ - https://mirrors.tuna./anaconda/cloud/conda-forge - https://mirrors.tuna./anaconda/pkgs/free/ - conda-forgeshow_channel_urls: truessl_verify: true

安裝jupyter lab

激活虛擬環(huán)境:

conda activate py373env

在py373env環(huán)境下,執(zhí)行命令:

conda install -c conda-forge jupyterlab

conda會自動分析你的環(huán)境,找到合適jupyterlab版本和包,下載安裝它們。

命令中的 '-c conda-forge'是指定從anaconda的官方鏡像下載安裝,這是推薦的方式。如果因網(wǎng)絡(luò)的問題,直接使用:

conda install jupyterlab

它會根據(jù)分析結(jié)果和網(wǎng)速選擇配置文件中列出的鏡像源中合適的通道下載鏡像。

安裝完成后,在py373env環(huán)境下,輸入:

 jupyter lab

即可啟動jupyter lab。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

安裝jupyterlab的擴(kuò)展

jupyterlab有很多擴(kuò)展插件可用。安裝合適的插件,能夠使你的效率提高很多。

JupyterLab 的插件是 npm 安裝包。所以按照 JupyterLab 的插件,需要提前安裝好 Node.js。

安裝命令:

conda install -c conda-forge nodejs

完成之后,有兩種方式進(jìn)行插件的安裝:

  1. 通過開啟 Extension Manager 來安裝和管理插件

  2. 通過執(zhí)行命令的方式安裝。 限于篇幅就不講了。

開啟Extension Manager安裝和管理插件

如果使用第一種方式,需要手動開啟 Extension Manager。

在jupytelab頁面,設(shè)置,高級設(shè)置 (command+逗號 ),選擇Extension Manager一欄,修改設(shè)置為 true:

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

這樣就可以使用Extension Manager來安裝jupyterlab的擴(kuò)展插件了。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

可以搜索插件,安裝插件,對已安裝的插件啟用、禁用、卸載。

安裝好jupyter toc 目錄插件,就可以使用目錄在文檔中導(dǎo)航了。

07- 搭建一個穩(wěn)健的matplotlib繪圖平臺

是不是看起來還不錯?

一個穩(wěn)健的Python,matplotlib平臺搭建好了,后面就讓我們在這個平臺上煉身手吧!

因為是草根們的草堂,所以可能有點(diǎn)太細(xì)了!但這會是我堅持的風(fēng)格,盡可能讓各等級的草根都能看懂。


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多