# 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)