# matplotlib+LaTeX+Anaconda ## Outline 爲了早日擺脫matlab,做出這份tortoise供學習 1. 一個乾净的windows 2. anaconda 個人版安裝 3. MikTex安裝 4. VSCode安裝與設定 5. matplotlib使用 6. drawio與adobe arcobat pro ### 2. Anaconda 安裝與環境管理 1. 下載exe https://www.anaconda.com/products/individual 2. 下一步,這邊選擇第二項 ![](https://i.imgur.com/H30KdYm.png) 3. 在彈出窗口繼續安裝,下一步直到這個畫面,勾上這個選項![](https://i.imgur.com/OCc4gJ7.png) 4. 等待安裝完成 5. 打開開始菜單,輸入cmd→enter,再輸入conda,得到如圖畫面安裝成功 ![](https://i.imgur.com/th3Dbc4.png) 6. 附上一些常用環境管理指令 - 导出:conda env export > environment.yaml - 指定环境导出:conda env export --name {环境名称} > environment.yaml - 载入:conda env create -f environment.yaml - 安装pip版本:conda install --yes --file requirements.txt - 创建环境,指定python版本:conda create -n $NAME_OF_ENV python=3.6 - 查看环境列表:conda env list - 激活环境:conda activate $ENV_NAME - 退出环境:conda deactivate - 删除环境:conda env remove -n $ENV_NAME - 管理扩展包 - conda install package_name - conda remove package_name - conda update package_name - conda update conda - conda list ### 3. MikTeX 1. 下載安裝包 https://miktex.org/download 2. 下一步,這裏選擇第二項![](https://i.imgur.com/hLvoHs5.png) 3. 下一步,install missing packages選擇yes 4. 安裝完成后,仍然開啓cmd,輸入pdflatex,顯示如下畫面則安裝成功 ![](https://i.imgur.com/pVKaJfY.png) 5. miktex console ![](https://i.imgur.com/YMJ8fA2.png) 當編譯paper時出現xxx package not found時,使用這個console可以安裝額外的package ![](https://i.imgur.com/uQiuaBi.png) 必須切換到管理員模式 ![](https://i.imgur.com/09P6xLn.png) 在package界面,搜尋需要的package再點擊+號即可安裝 ### 4.VSCode 1. 安裝 https://code.visualstudio.com/ 2. 下面四個全部勾上方便使用 ![](https://i.imgur.com/g7urvCr.png) 3. 切換到extension界面,安裝基本的插件 ![](https://i.imgur.com/HaJ4yxB.png) 4. 搜尋extension latex workshop,安裝 ![](https://i.imgur.com/eFtgURA.png) 5. 進入vscode,點擊左下角齒輪進入設定,輸入latex搜尋 ![](https://i.imgur.com/fFFW6Vj.png) 點擊edit in settings.json 複製入以下設定 ``` "latex-workshop.view.pdf.viewer": "tab", "latex-workshop.intellisense.bibtexJSON.replace": { }, "latex-workshop.latex.recipes": [ // { // "name": "xelatex -> bibtex -> xelatex*2", // "tools":[ // "xelatex", // "bibtex", // "xelatex", // "xelatex" // ] // }, { "name": "pdflatex ➞ bibtex ➞ pdflatex × 2", "tools": [ "pdflatex", "bibtex", "pdflatex", "pdflatex" ] }, { "name": "latexmk 🔃", "tools": [ "latexmk" ] }, { "name": "latexmk (latexmkrc)", "tools": [ "latexmk_rconly" ] }, { "name": "latexmk (lualatex)", "tools": [ "lualatexmk" ] }, { "name": "Compile Rnw files", "tools": [ "rnw2tex", "latexmk" ] }, { "name": "Compile Jnw files", "tools": [ "jnw2tex", "latexmk" ] }, { "name": "tectonic", "tools": [ "tectonic" ] } ] ``` 注意json語法 6. 關閉所有vscode窗口,重新打開一個tex文件,切換到tex頁面,可以看到首選compiler已經變成pdflatex bibtex 兩次pdflatex則設定成功 ![](https://i.imgur.com/gGnR79X.png) 在tex文件中按下ctrl+s即可保存並自動編譯,參考左下角build過程,最後出現一個勾則build成功,會在tex目錄下看到同名pdf文件 7. 附上一個範例tex測試包,編譯成功則表明安裝成功 https://drive.google.com/file/d/1p57ZQLgk3JMv9hnl6FNnDqEkml1SkgV-/view?usp=sharing main tex在 acmart-primary/acmart-primary/samples/sample-sigconf.tex ### 5. matplotlib安裝與使用 1. 先使用anaconda安裝一些package,注意,需要使用管理員模式啓動cmd ``` conda install matplotlib conda install pandas conda install numpy ``` 2. matplotlib本身是一個有限狀態機,批量畫圖一般使用如下形式,盡量使用jupyter notebook進行操作 ``` 畫圖function 設定格式function 畫圖function 設定格式function ...... ``` 3. 參考matlab老師的需求,先附上基本的設定code ``` def public_setup(filename="xxx.eps"): csfont = {'family':'serif', 'serif': 'Times' , 'size' : 20} matplotlib.rc('text', usetex=True) matplotlib.rc('font', **csfont) matplotlib.rc('svg', fonttype='none') matplotlib.rc('axes', linewidth=1) plt.rcParams['figure.constrained_layout.use'] = False # 設定字體,字形,無需修改 ax = plt.gca() ax.set_position([0.65, 0.65, 4.6, 3.125]) # 設定axes基本位置屬性,無需修改 plt.tick_params(direction='out') # 設定tick標識方向,無需修改 lgd = plt.legend(bbox_to_anchor=(1,02, 0.4), loc=1, fancybox=False, labelspacing=0.05, handletextpad=0.5, borderpad=0.25, title="", framealpha=1, ncol=1, columnspacing=0.2, fontsize=16) # 設定legend,即圖例,參數依次為 # bbox_to_anchor: tuple,決定legend的位置,可根據不同圖例内容設定 # loc:int或str,圖例位置參考點,無需修改 # fancybox,labelspacing,handletextpad,borderpad 均無需修改 # title:legend標題,一般留空 # framealpha:圖例透明度,一般無需修改 # ncol:圖例column數量,如果有三個legend,設為3表示橫置,默認1為單一column x 3 row # columnspacing 無需調整 # fontsize 圖例字體大小,根據需要自行決定 # 其他參數一般無需修改 frame = lgd.get_frame() frame.set_edgecolor('black') # 設定legend邊框顔色,無需修改 #frame.set_linewidth(1) plt.xticks(rotation=0) # 設定x標簽label旋轉角度,一般為0,若字太大可以設定45度 #ax.get_legend().remove() # 不需要legend時取消注解可以移除legend ax.tick_params(axis='x', which='major', labelsize=16) # 設定x軸主要標簽字體大小 plt.xlabel("x") # 設定x軸名稱 plt.ylabel("y") # 設定y軸名稱 plt.ylim(0,100) # 設定y軸範圍 miloc = plt.MultipleLocator(5) # 生成副刻度,這邊取5 (主刻度為10) ax.yaxis.set_minor_locator(miloc) # 給y軸啓用副刻度 ax.set_axisbelow(True) plt.grid(axis='y',which="both") # 給主副刻度啓用網格 fig = plt.gcf() # 獲取當前畫布 fig.set_size_inches(5.5, 4.05) # 設定圖大小,一般無需改動,需要更大畫布時設定 fig.subplots_adjust(left=0.25, bottom=0.25)#, right=4.6, top=3.125) # 無需改動 #fig.set_tight_layout(True) plt.savefig(filename, bbox_inches="tight", bbox_extra_artists=(lgd,)) # 以緊密方式保存圖片,去除白邊;一般情況下使用eps保存圖片,即可放入paper,如果eps生成的圖不正常可以使用pdf為結尾保存,再導出到eps即可 plt.show() # 在jupyter notebook中展示圖片 plt.close() # 關閉這張圖的寫入流,最好加這行避免一些bug ``` 4. 附上一張axis,axes,figure的簡單介紹圖 ![](https://i.imgur.com/RCwfdPH.png) ![](https://i.imgur.com/7kib1QM.png) ``` ax = plt.gca() fig = plt.gcf() ``` 5. 範例圖片 注意,在第一次啓動jupyter kernel時,如果畫圖出現字體跑掉的情況,再crtl+enter畫一次即可 圖片均可以使用latex語法($)設定數學公式,但是需要注意一些衝突 ``` 'FedAvg$^{\rm HPE}$, $\alpha=0.3$' r'FedAvg$^{\rm HPE}$, $\alpha=0.3$' r'FedAvg$^{\\rm HPE}$, $\\alpha=0.3$' ``` 第一行rm不會起作用,因爲python會首先把\r當作一個字處理掉 第二行可以正常work,但是如果第二行的str作爲regular expression的替換str,則需要第三行才可正常work,因爲re也會把反斜綫吃掉 名稱盡量不要使用底綫_,會被當作下標 百分號前面需要加反斜綫\%,否則latex會當作注解 ![](https://i.imgur.com/nw6b0yE.png) 6. 範例data與jupyter code https://drive.google.com/file/d/1y9UbmEj_w4cvurYNID5rB1Jlsn9eD1Mo/view?usp=sharing 成功執行看到圖片即可,第一次啓動jupyter kernel需要執行兩次字體才會正常,并且畫圖時間比較久 7. 由於seaborn為matplotlib高級封裝,這些設定也支持seaborn ### 6. drawio & adobe arcobat pro 1. 下載 https://draw-io.en.softonic.com/ 2. 繪圖完成后,把需要輸出的形狀框起來,選擇導出pdf ![](https://i.imgur.com/St3tIKs.png) 勾選這兩項 ![](https://i.imgur.com/jIj1TfV.png) 3. 當需要在框中輸入文字時,請取消勾選格式化文本這一項 ![](https://i.imgur.com/WcSfZKW.png) 4. 綠色版reader https://drive.google.com/file/d/1bnmUzcyJKXku9zE8SuRfS5r_Fnyy2IfP/view?usp=sharing 防河蟹解壓密碼:www.downza.cn 運行steup.exe一路下一步安裝即可 5. 對於drawio生成的eps,使用adobe reader開啓,如圖操作即可轉爲eps ![](https://i.imgur.com/LmSTgV1.png)