1. 圖表註解的重要性
為什麼要為圖表添加標籤、圖例和註解
今天我們要討論資料視覺化中非常重要的一部分——註解。這就像電視的接收器:沒有它,雖然畫面都在,但看起來就不那麼清晰。少了標籤、圖例和註解,數據就像是沉默的數字,缺少與人類對話的語言溝通。
你可能會想:標籤和圖例真的那麼重要嗎?答案是簡單的:它們就像是圖表的鹽和胡椒。沒有它們,圖表可能會變得難以閱讀,數據的意義也可能變得模糊不清。用註解,我們為圖表賦予了更多的意義,讓它更直觀易懂。
標籤和圖例能幫助觀眾快速理解他們看到的是什麼。想像一下,如果你看到的是一張沒有指示牌的寶藏地圖,然後有人馬上要求你找到通往寶藏的路。這聽起來是不是有點瘋狂?沒有標籤的圖表也是如此。我們應該幫助觀眾,而不是讓他們的生活變得更加複雜。
現在讓我們更詳細地了解如何用Python和Matplotlib把註解的魔法加入到你的圖表中。準備好了嗎?那麼我們開始吧!
2. 軸的標籤
用xlabel、ylabel和title來管理軸的標籤
第一步——給軸命名。這個過程簡單得像1加1。使用xlabel()
和ylabel()
函數分別為X
和Y
軸添加標籤。至於圖表標題,就用title()
吧!這些函數讓圖表結構化,更容易理解。這裡是一個簡單的範例:
import matplotlib.pyplot as plt
# 資料
x = [0, 1, 2, 3, 4, 5]
y = [0, 1, 4, 9, 16, 25]
# 建立圖表
plt.plot(x, y, color='blue')
# 添加標籤
plt.xlabel('時間 (小時)', color='red')
plt.ylabel('距離 (公里)', color='green')
plt.title('距離隨時間增長的變化', color='gold')
# 顯示圖表
plt.show()
還可以把文字和圖表染成你喜歡的顏色:
調整標籤的字體與大小
為了讓圖表更加吸引眼球,可以改變標籤的字體大小、顏色和樣式。在Matplotlib裡,可以用fontsize
、fontweight
、color
等參數來實現。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 20, 25, 30]
plt.plot(x, y)
# 使用參數設置標題與標籤
plt.title("範例圖表", fontsize=16, fontweight="bold", color="navy")
plt.xlabel("X值", fontsize=12, color="darkred")
plt.ylabel("Y值", fontsize=12, color="darkred")
plt.show()
這個範例中:
fontsize
設定了字體大小。fontweight="bold"
讓文字變粗。color
改變文字顏色。
3. 顯示「圖例」
用legend()函數添加與設定圖例
圖例不僅僅是一個傳說,還是圖表中的重要工具。它解釋了圖表中的線條或柱狀圖的含義,幫助分辨多組數據。Matplotlib讓這一切變得超簡單。你可以這樣為圖表添加圖例:
# 資料
x = [0, 1, 2, 3, 4, 5]
y1 = [0, 1, 4, 9, 16, 25]
y2 = [0, 1, 2, 3, 4, 5]
# 建立圖表
plt.plot(x, y1, label='數字的平方')
plt.plot(x, y2, label='原數值')
# 添加標籤
plt.xlabel('時間 (小時)')
plt.ylabel('距離 (公里)')
plt.title('函數比較')
# 添加圖例
plt.legend(loc='upper left')
# 顯示圖表
plt.show()
執行legend()
會將圖例添加到你指定的位置。參數loc
可以設為 'best',讓Python自動選擇最佳位置(沒錯,這裡也用到了人工智慧)。
圖例的位置
通過參數loc
可以改變圖例的位置。例如:
loc="upper right"
——右上角(預設)。loc="upper left"
——左上角。loc="lower right"
——右下角。loc="center"
——中心。
plt.legend(loc="upper left")
圖例的大小與顏色設定
你可以用參數fontsize
、facecolor
與edgecolor
來設定圖例的字體大小與顏色。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 20, 25, 30]
y2 = [5, 10, 15, 20, 25]
plt.plot(x, y1, label="線條 1", color="blue")
plt.plot(x, y2, label="線條 2", color="green")
plt.title("帶有可調圖例的圖表")
plt.xlabel("X值")
plt.ylabel("Y值")
# 圖例設定
plt.legend(loc="upper left", fontsize=10, facecolor="lightgray", edgecolor="black")
plt.show()
4. 軸的格式化
Matplotlib允許設定刻度範圍、標籤與值範圍,這對於提高圖表的可讀性很有幫助。
改變軸的範圍
用xlim()
與ylim()
函數可以設置軸的最小值與最大值。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 20, 25, 30]
plt.plot(x, y)
plt.xlabel("X值")
plt.ylabel("Y值")
plt.xlim(0, 6) # X軸範圍從0到6
plt.ylim(5, 35) # Y軸範圍從5到35
plt.show()
刻度標籤的設定
用xticks()
和yticks()
函數可以自訂軸上的標籤。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 20, 25, 30]
plt.plot(x, y)
plt.xlabel("X值")
plt.ylabel("Y值")
# 設置X軸的標籤
plt.xticks([1, 2, 3, 4, 5], ["一", "二", "三", "四", "五"])
plt.show()
在圖表上添加網格
網格能幫助更好地定位圖表上的數值,特別是當圖表有很多數據點或值時。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 20, 25, 30]
plt.plot(x, y)
plt.xlabel("X值")
plt.ylabel("Y值")
plt.grid(True) # 添加網格
plt.show()
用plt.grid(True)
可以添加預設的網格。也可以用參數像color
、linestyle
和linewidth
來設定網格的樣式。
plt.grid(color="gray", linestyle="--", linewidth=0.5)
5. 添加圖表註解
註解能幫助突出重要的數據點或對圖表進行額外說明。annotate()
方法可以為圖表上的指定點添加文字。
添加註解
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 15, 20, 25, 30]
plt.plot(x, y)
plt.xlabel("X值")
plt.ylabel("Y值")
# 添加註解
plt.annotate("最大值", xy=(5, 30), xytext=(3, 30),
arrowprops=dict(facecolor="black", shrink=0.05))
plt.show()
在這個範例中:
xy=(5, 30)
指明我們要註解的點的座標。xytext=(3, 30)
指明文字的位置。arrowprops
添加了一個指向該點的箭頭。
6. 改善圖表的範例
現在實際操作一下!看看如何通過添加註解來改善圖表。
假設我們有一張顯示兩個不同產品每月銷售量增長的圖表。我們希望讓它更易懂,並添加必要的註解。
import matplotlib.pyplot as plt
# 月份和銷售量
months = ['一月', '二月', '三月', '四月', '五月', '六月']
sales_product1 = [100, 120, 130, 150, 170, 190]
sales_product2 = [90, 110, 115, 140, 165, 180]
# 繪製圖表
plt.plot(months, sales_product1, marker='o', label='產品 1')
plt.plot(months, sales_product2, marker='s', label='產品 2')
# 添加標籤與標題
plt.xlabel('月份')
plt.ylabel('銷量 (件)')
plt.title('產品銷售增長趨勢')
plt.legend(loc='upper left')
# 添加註解
for i, txt in enumerate(sales_product1):
plt.annotate(txt, (months[i], sales_product1[i]), textcoords="offset points", xytext=(0,10), ha='center')
for i, txt in enumerate(sales_product2):
plt.annotate(txt, (months[i], sales_product2[i]), textcoords="offset points", xytext=(0,10), ha='center')
# 顯示圖表
plt.show()
沒錯,我們在每個數據點上方添加了小而明顯的數字!這種註解對於分析大型數據集以及需要關注每個細節的地方來說是非常有幫助的。
好啦!看來我們已經掌握了如何使用Matplotlib進行圖表註解了。這些技能將對於創建報告和展示數據非常有幫助,尤其在那種數字比千言萬語還重要的場合。所以,開始實踐吧,畫圖、註解,改變數據的世界!
GO TO FULL VERSION