跳至主要內容

標籤「Python」的 5 篇文章

查看所有標籤

Matplotlib (Pyplot) 常用程式碼範例

· 7 分鐘閱讀

這裡介紹一些常用的程式碼和圖表範例。

目次

建立圖表

首先載入所需的函式庫。

import matplotlib.pyplot as plt
import numpy as np

單一圖表

fig, ax = plt.subplots()

2 x 3 的圖表

fig, axs = plt.subplots(2, 3)

繪製圖表

繪製拋物線

x = np.linspace(-1, 1, 201)
y = x ** 2

fig, ax = plt.subplots()
ax.plot(x, y)

用點繪製拋物線

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, 'o')

顏色設為橘色

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, color="tab:orange")

標準顏色如下:

顏色字串
tab:blue
tab:orange
tab:green
tab:red
tab:purple
tab:brown
粉紅tab:pink
tab:gray
橄欖tab:olive
tab:cyan

設定線的粗細為 4

fig, ax = plt.subplots()

x = np.linspace(-1, 1, 21)
y = x ** 2

ax.plot(x, y, lw=4)

設定標題

將標題設為 Title

fig, ax = plt.subplots()
ax.set_title("Title")

設定軸標籤

設定 x 軸標籤

將 x 軸標籤設為 Time (s)

fig, ax = plt.subplots()
ax.set_xlabel("Time (s)")

設定 y 軸標籤

將 y 軸標籤設為 Distance (m)

fig, ax = plt.subplots()
ax.set_ylabel("Distance (m)")

設定圖表的上限與下限

將上限設為 100

fig, ax = plt.subplots()
ax.set_ylim(top=100)

將下限設為 -100

fig, ax = plt.subplots()
ax.set_ylim(bottom=-100)

將上限設為 100,下限設為 -100

fig, ax = plt.subplots()
ax.set_ylim([-100, 100])

設定圖表的左邊與右邊

將左邊設為 -100

fig, ax = plt.subplots()
ax.set_xlim(left=-100)

將右邊設為 100

fig, ax = plt.subplots()
ax.set_xlim(right=100)

將左邊設為 -100,右邊設為 100

fig, ax = plt.subplots()
ax.set_xlim([-100, 100])

顯示網格

fig, ax = plt.subplots()
ax.grid()

僅顯示垂直網格

fig, ax = plt.subplots()
ax.grid(axis="x")

僅顯示水平網格

fig, ax = plt.subplots()
ax.grid(axis="y")

設定刻度

設定 x 軸刻度

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks)

設定 x 軸刻度和刻度標籤

fig, ax = plt.subplots()
xticks = range(6)
ax.set_xticks(xticks, [f"{xtick}m" for xtick in xticks])

設定 y 軸刻度

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks)

設定 y 軸刻度和刻度標籤

fig, ax = plt.subplots()
yticks = [i * 20 for i in range(6)]
ax.set_yticks(yticks, [f"{ytick}%" for ytick in yticks])

刪除刻度

刪除 x 軸刻度

fig, ax = plt.subplots()
ax.tick_params(bottom=False)

刪除 x 軸刻度標籤

fig, ax = plt.subplots()
ax.tick_params(labelbottom=False)

刪除 y 軸刻度

fig, ax = plt.subplots()
ax.tick_params(left=False)

刪除 y 軸刻度標籤

fig, ax = plt.subplots()
ax.tick_params(labelleft=False)

設定刻度顏色

將 x 軸刻度顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="x", color="tab:red")

將 x 軸刻度標籤顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="x", labelcolor="tab:red")

將 y 軸刻度顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="y", color="tab:red")

將 y 軸刻度標籤顏色設為紅色

fig, ax = plt.subplots()
ax.tick_params(axis="y", labelcolor="tab:red")

調整圖表間距

將縱向間距設為 0.2,橫向間距設為 0.3

fig, ax = plt.subplots(3, 3)
fig.subplots_adjust(hspace=0.2, wspace=0.3)

自動設定間距

fig, ax = plt.subplots(3, 3)
fig.tight_layout()

儲存圖片

以 PNG 格式儲存

fig, ax = plt.subplots()
plt.savefig("graph.png")

以 SVG 格式儲存

fig, ax = plt.subplots()
plt.savefig("svg.png")

以 PDF 格式儲存

fig, ax = plt.subplots()
plt.savefig("svg.pdf")

graph.pdf

以 300 dpi 儲存

fig, ax = plt.subplots()
plt.savefig("graph300.png", dpi=300)

pyenv 安裝

· 3 分鐘閱讀

這篇備忘錄記錄了 pyenv 的安裝。

資訊

pyenv 是一個命令行工具,用於管理多個 Python 版本。它允許你在同一台機器上輕鬆地安裝、切換和管理不同的 Python 環境,而不會相互衝突。

這對於需要使用不同 Python 版本進行開發的項目(例如,一個項目需要 Python 3.8,另一個需要 Python 3.10)非常有用。

1. 安裝 pyenv

安裝 pyenv 的方法因操作系統而異。

A. macOS (使用 Homebrew) - 推薦

在 macOS 上,使用 Homebrew 安裝 pyenv 是最簡單的方法。

brew update
brew install pyenv

B. Linux (使用 pyenv-installer 腳本) - 推薦

對於 Linux 系統,可以使用 pyenv-installer 腳本來自動化安裝 pyenv 及其常用的插件。

curl https://pyenv.run | bash

C. Windows (使用 pyenv-win)

對於 Windows 用戶,官方推薦使用 pyenv-win,它是 pyenv 的一個 Windows 版本。

# 通過 PowerShell 安裝
Invoke-WebRequest -UseBasicParsing -Uri "https://raw.githubusercontent.com/pyenv-win/pyenv-win/master/pyenv-win/install-pyenv-win.ps1" | Invoke-Expression

# 或者通過 pip 安裝 (需要先有 Python 環境)
pip install pyenv-win --target %USERPROFILE%\.pyenv

請參考 pyenv-win 的 GitHub 儲存庫獲取最新安裝說明:https://github.com/pyenv-win/pyenv-win

2. 配置 Shell 環境

安裝 pyenv 後,你需要將其添加到你的 Shell 環境中。這會讓 pyenv 命令在你的終端中可用。

A. Bash

將以下內容添加到你的 ~/.bashrc (或 ~/.bash_profile) 文件中:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)" # 確保 shell 能夠加載 pyenv
eval "$(pyenv virtualenv-init -)" # 如果你計劃使用虛擬環境

完成後,重新載入你的 shell 配置:

source ~/.bashrc

B. Zsh

將以下內容添加到你的 ~/.zshrc 文件中:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

完成後,重新載入你的 shell 配置:

source ~/.zshrc

C. 驗證安裝

打開一個新的終端會話,然後運行:

pyenv --version

如果成功,它會顯示 pyenv 的版本號。

3. 安裝 Python 版本

現在你可以使用 pyenv install 命令來安裝你需要的 Python 版本。

查看可用的 Python 版本

pyenv install --list

這會列出所有可安裝的 Python 版本,包括 CPython、Jython、Anaconda 等。

安裝特定版本

pyenv install 3.9.10 # 安裝 Python 3.9.10
pyenv install 3.10.6 # 安裝 Python 3.10.6

安裝可能需要一些時間,因為它會下載源碼並編譯 Python。

4. 使用 Python 版本

全局設置 Python 版本

設置全局 Python 版本:

pyenv global 3.10.6

這會將 3.10.6 設置為你所有 shell 會話的默認 Python 版本。

局部設置 Python 版本 (專案目錄)

在專案目錄中,你可以設置一個局部 Python 版本。

cd my_project
pyenv local 3.9.10

這會在當前目錄中創建一個 .python-version 文件。當你進入這個目錄時,pyenv 會自動切換到指定的 Python 版本。

查看當前使用的 Python 版本

pyenv versions

當前使用的版本會被標記一個星號 *

* 3.10.6 (set by /home/user/.pyenv/version)
3.9.10

5. 總結

pyenv 是一個非常實用且強大的工具,用於管理 Python 版本。它提供了一種簡潔而可靠的方式來應對多個 Python 環境的需求,避免了版本衝突,讓你的開發工作流更加順暢。正確安裝和配置 pyenv 是任何嚴肅 Python 開發者的基本技能。

Poetry 備忘錄

· 3 分鐘閱讀

這篇備忘錄記錄了 Poetry。

資訊

Poetry 是一個用於 Python 項目依賴管理和打包的工具。它旨在提供一個更簡潔、更直觀的開發體驗,解決了傳統 Python 項目中 pipvirtualenv 的一些痛點。

Poetry 將依賴管理、虛擬環境、打包和發布功能集成到一個工具中,使得 Python 項目的生命週期管理更加順暢。

1. 安裝 Poetry

推薦使用官方提供的腳本進行安裝:

Linux / macOS / WSL

curl -sSL https://install.python-poetry.org | python3 -

Windows (PowerShell)

(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python -

安裝完成後,你可能需要將 Poetry 的可執行路徑添加到你的 PATH 環境變量中。安裝腳本通常會給出提示。

2. 創建新專案

要創建一個新的 Poetry 專案:

poetry new my-project
cd my-project

這會創建一個包含以下結構的新目錄:

my-project/
├── my_project/
│ └── __init__.py
└── pyproject.toml
└── README.md

3. pyproject.toml 文件

Poetry 使用 pyproject.toml 文件來管理項目元數據和依賴。這是 Poetry 的核心配置文件。

範例 pyproject.toml

[tool.poetry]
name = "my-project"
version = "0.1.0"
description = ""
authors = ["Your Name <[email protected]>"]
readme = "README.md"
packages = [{include = "my_project"}] # 指定你的 Python 包

[tool.poetry.dependencies]
python = "^3.10" # 指定 Python 版本
requests = "^2.28.1" # 運行時依賴

[tool.poetry.group.dev.dependencies]
pytest = "^7.1.2" # 開發時依賴 (例如測試工具)

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

4. 管理依賴

添加依賴

poetry add requests    # 添加運行時依賴
poetry add --group dev pytest # 添加開發時依賴

這會更新 pyproject.toml 並安裝依賴到虛擬環境中。

移除依賴

poetry remove requests
poetry remove --group dev pytest

安裝依賴

如果 pyproject.tomlpoetry.lock 已經存在,安裝所有依賴:

poetry install

更新依賴

更新所有依賴到最新兼容版本:

poetry update

更新指定依賴:

poetry update requests

5. 虛擬環境

Poetry 會自動為每個專案創建和管理虛擬環境。

運行命令

在虛擬環境中運行命令:

poetry run python my_script.py

進入虛擬環境 Shell

poetry shell

然後你就可以直接運行 python 或其他已安裝的命令。

查看虛擬環境信息

poetry env info

刪除虛擬環境

poetry env remove python3.10 # 替換為實際的 Python 版本或環境路徑

6. 打包和發布

打包專案

創建一個源發行版(sdist)和一個輪子文件(wheel):

poetry build

打包文件會生成在 dist/ 目錄中。

發布到 PyPI

在發布之前,請確保你的 pyproject.toml 中的元數據是準確的。

poetry publish

如果你是第一次發布,可能需要配置 PyPI 憑據。

poetry config pypi-token.pypi <your-pypi-token>

7. 總結

Poetry 是一個現代化的 Python 項目管理工具,它簡化了依賴管理、虛擬環境、打包和發布的整個流程。它的 pyproject.toml 文件提供了一個清晰且中心化的方式來定義項目元數據和依賴,大大提升了開發效率和項目可維護性。

安裝與設定 Pyenv

· 2 分鐘閱讀
  1. 複製 Pyenv 複製 Pyenv 的儲存庫。 建議的目錄為 ~/.pyenv

git clone https://github.com/pyenv/pyenv ~/.pyenv


0. 編譯 Bash 擴充功能以提升速度
可以編譯 Bash 擴充功能來提升效能。
即使編譯失敗,仍可正常運作。

```sh
cd ~/.pyenv && src/configure && make -C src
  1. 設定(bash) 路徑及其他設定。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.profile echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.profile echo 'eval "$(pyenv init --path)"' >> ~/.profile export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" echo -e 'if shopt -q login_shell; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >> /.bashrc echo -e 'if [ -z "$BASH_VERSION" ]; then'
'\n export PYENV_ROOT="$HOME/.pyenv"'
'\n export PATH="$PYENV_ROOT/bin:$PATH"'
'\n eval "$(pyenv init --path)"'
'\nfi' >>
/.profile


# 安裝 Python 環境

## 安裝相依套件
```sh
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncurses-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblemgma-dev -y

查看可安裝的環境

pyenv install -l

安裝

編譯需要一些時間,請耐心等候。

CONFIGURE_OPTS= "--enable-shared" pyenv install 3.9.5

確認版本

pyenv versions

切換版本

pyenv global 3.9.5