日期:2023年5月11日
加上資料標籤
在某些特殊的狀況下,會在數據點旁邊標示資料點的數值。下方程式碼第14 ~ 16行,依序讀取串列 x、y 的元素,組合成字串 txt,再用 annotate [1] 將 txt 標示在數據點的右側,下圖是採用預設字型的效果。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [3, 5, 7, 9, 11]
plt.figure(figsize=(8, 6), dpi=96)
plt.xlabel("x", fontsize=24)
plt.ylabel("y", fontsize=24)
plt.xticks(fontsize=20)
plt.yticks(fontsize=20)
plt.grid(color="grey", linestyle="--", linewidth=1)
plt.plot(x, y, marker="o", markerfacecolor="blue", markersize=8, linestyle="")
for i in range(len(x)):
txt = "(" + str(x[i]) + ", " + str(y[i]) + ")"
plt.annotate(txt, (x[i]+0.1, y[i]-0.1), fontsize=18)
plt.show()
預設樣式
改變字型
由於我們經常使用的英文、數字字型為 Times New Roman,如果要將圖中的字型改為 Times New Roman,在第2行加上這行程式碼。
plt.rcParams["font.family"] = "Times New Roman"
使用 matplotlib.rc [2] 也有同樣的效果。
from matplotlib import rc
rc("font", **{"family" : "Times New Roman"})
改變字型為 Times New Roman
將縱軸、横軸標籤為斜體
但通常物理量的代號為斜體字,單位則採用一般的字體,也就是在縱軸、横軸標籤內,只有部分字體是斜體字,為了達成這個效果,要將這2行程式碼改掉
plt.xlabel("x", fontsize=24)
plt.ylabel("y", fontsize=24)
改成以下這樣
plt.xlabel(r"$\mathit{x}$", fontsize=24)
plt.ylabel(r"$\mathit{y}$", fontsize=24)
下圖是修改後的成果,但是斜體字的字型不是 Times New Roman,也不是常用的數學式子字型。
改變字型為 Times New Roman 但縱軸、横軸標籤為斜體
使用 $\LaTeX$ 功能
如果想要使用常見的數學式子字型,我認為效果最好的作法是使用 $\LaTeX$ 功能,在 from matplotlib import rc 這行之後加上,但是執行時要等幾秒鐘才會出現繪圖成果。
rc("text", usetex=True)
使用 LaTeX 功能的效果
參考資料
HackMD 版本連結:https://hackmd.io/@yizhewang/HyxpvG6YEh
沒有留言:
張貼留言