Matplotlib 提供了靈活的圖例功能,能有效標示圖表元素。除了自動識別標籤外,也能自定義標籤或使用控制程式碼精確控制圖例內容。此外,還能調整圖例位置、欄數和標題,使圖表更具可讀性。線上圖繪製方面,除了基本繪製外,Matplotlib 還支援軸範圍設定、線性與對數 Scaling,並提供物件導向程式設計的介面,方便開發者以更彈性、結構化的方式操作圖表元素和屬性,提升程式碼的可維護性。
使用Matplotlib新增圖例
在使用Matplotlib繪製線圖時,新增圖例(legend)是非常重要的,因為它提供了一個視覺化的框架來理解圖中所代表的資料。圖例有助於識別圖中不同的線或標記,並將其與特定的資料或類別聯絡起來。這使得觀察者更容易正確地理解圖表,並且可以更好地溝通變數、單位或其他相關資料方面的資訊。
當處理複雜的圖表,包含多個資料集或變數時,圖例也使得比較圖中的不同線或標記變得更加容易。它使得理解和分析繪製的資料變得更加清晰。Matplotlib的圖例函式有三種不同的呼叫簽名,如下所述:
- legend():此呼叫簽名自動識別帶有標籤的繪圖元素,並使用分配給這些元素的標籤生成圖例。當您想要顯示具有預設標籤的圖例,且繪圖包含多個線或標記時,這非常有用。
- legend(labels):使用此呼叫簽名,您可以為繪圖元素指定自定義標籤。您可以為每個線或標記分配特定的名稱,以便在圖例中顯示。
- legend(handles, labels):此呼叫簽名提供了最大的靈活性,因為它允許使用者明確指定圖例中的控制程式碼(代表線或標記的物件)和相應的標籤。透過這種方式,您可以精確控制繪圖元素與其在圖例中的標籤之間的對映。
示例程式:Chap5_Example5.21.py
以下是示範如何為線圖新增圖例的程式碼:
import matplotlib.pyplot as plt
import numpy as np
# 建立一個陣列,從0到2π,共100個資料點
arr1 = np.linspace(0, 2*np.pi, 100)
# 建立一個包含3個子繪圖的figure
fig, axs = plt.subplots(3, 1)
# 在第一個子繪圖中繪製兩條線,並新增標籤
axs[0].plot(arr1, arr1**2, label='平方')
axs[0].plot(arr1, np.sin(arr1), label='正弦')
axs[0].legend()
# 在第二個子繪圖中繪製兩條線,並手動指定圖例標籤
axs[1].plot(arr1, arr1**2)
axs[1].plot(arr1, np.sin(arr1))
axs[1].legend(['平方', '正弦', '餘弦'])
# 建立一個列表,包含控制程式碼和標籤
line1, = plt.plot(arr1, arr1**2)
line2, = plt.plot(arr1, np.sin(arr1))
# 顯示繪圖
plt.show()
這個程式碼示範瞭如何使用Matplotlib的圖例函式為線圖新增圖例,並展示了三種不同的呼叫簽名。透過新增圖例,您可以使您的繪圖更加清晰、易於理解,並且可以更好地溝通您的資料。
使用Matplotlib建立帶有圖例的線圖
在使用Matplotlib進行資料視覺化時,新增圖例(legend)可以幫助使用者更好地理解圖表中的各個元素。以下是建立帶有圖例的線圖的步驟和示例。
建立圖表
首先,需要匯入必要的函式庫,包括matplotlib.pyplot
和numpy
。然後,建立一個包含多個子圖的圖表。
import matplotlib.pyplot as myplt
import numpy as mynp
# 建立資料
x = mynp.linspace(0, 10, 100)
# 建立圖表
myfig, myaxs = myplt.subplots(3, figsize=(8, 10))
新增圖例
為了新增圖例,需要定義圖例的控制柄(handles)和標籤(labels)。然後,可以使用legend()
方法新增圖例。
# 定義圖例控制柄和標籤
myhandles = [myline1, myline2, myline3]
mylabels = ['MySquare', 'MySine', 'MyCos']
# 新增圖例
myaxs[2].legend(myhandles, mylabels)
自定義圖例位置
Matplotlib允許使用者自定義圖例的位置。可以使用以下程式碼來設定不同的位置:
位置 | 程式碼 |
---|---|
最佳位置 | 0 |
右上角 | 1 |
左上角 | 2 |
左下角 | 3 |
右下角 | 4 |
右側 | 5 |
中左 | 6 |
中右 | 7 |
下方中心 | 8 |
上方中心 | 9 |
例如,要將圖例放在右上角,可以使用以下程式碼:
myaxs[2].legend(myhandles, mylabels, loc='upper right')
自定義圖例欄數
可以使用ncol
引數來自定義圖例的欄數。例如,要將圖例設定為2欄,可以使用以下程式碼:
myaxs[2].legend(myhandles, mylabels, ncol=2)
新增圖例標題
可以使用title
引數來新增圖例標題。例如:
myaxs[2].legend(myhandles, mylabels, title='My Legend')
顯示圖表
最後,使用show()
方法來顯示圖表。
myplt.show()
這些步驟和示例可以幫助使用者建立帶有圖例的線圖,並自定義圖例的位置、欄數和標題。
使用Matplotlib進行資料視覺化
在資料科學中,視覺化是呈現資料的一種有效方式。Matplotlib是一個流行的Python函式庫,提供了豐富的工具和功能來建立高品質的2D和3D圖表。以下是使用Matplotlib進行資料視覺化的範例。
繪製簡單線圖
首先,讓我們繪製一個簡單的線圖。假設我們有一個陣列x
和一個陣列y
,我們可以使用plot()
函式來繪製線圖。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = x**2
plt.plot(x, y, label='平方函式')
plt.legend(title='圖例')
plt.show()
這個程式碼會產生一個簡單的線圖,顯示平方函式的曲線。
繪製多個線圖
如果我們想要繪製多個線圖,可以使用plot()
函式多次。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y1 = x**2
y2 = np.sin(x)
plt.plot(x, y1, label='平方函式')
plt.plot(x, y2, label='正弦函式')
plt.legend(title='圖例')
plt.show()
這個程式碼會產生一個圖表,顯示平方函式和正弦函式的曲線。
設定圖表標題和軸標籤
我們可以使用title()
函式來設定圖表標題,使用xlabel()
和ylabel()
函式來設定軸標籤。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = x**2
plt.plot(x, y)
plt.title('平方函式圖表')
plt.xlabel('x軸')
plt.ylabel('y軸')
plt.show()
這個程式碼會產生一個圖表,顯示平方函式的曲線,並且有標題和軸標籤。
使用xlim()和ylim()函式設定軸範圍
如果我們想要設定軸範圍,可以使用xlim()
和ylim()
函式。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2*np.pi, 100)
y = x**2
plt.plot(x, y)
plt.xlim(0, 4) # 設定x軸範圍
plt.ylim(0, 16) # 設定y軸範圍
plt.show()
這個程式碼會產生一個圖表,顯示平方函式的曲線,並且有設定好的軸範圍。
自訂座標軸範圍
在繪製函式圖形時,瞭解座標軸的範圍對於資料分析和視覺化非常重要。下面,我們將探討如何自訂座標軸的範圍,以便更好地展示資料。
取得座標軸的預設範圍
首先,我們需要了解座標軸的預設範圍。這可以透過 myplt.xlim()
和 myplt.ylim()
函式來實作。
myleft, myright = myplt.xlim()
mybottom, mytop = myplt.ylim()
print('The default Left limit value on the x-axis:', myleft)
print('The default Right limit value on the x-axis:', myright)
print('The default Bottom limit value on the y-axis:', mybottom)
print('The default Top limit value on the y-axis:', mytop)
設定座標軸的新範圍
獲得預設範圍後,我們可以使用 myplt.xlim()
和 myplt.ylim()
函式來設定新的座標軸範圍。
myplt.xlim(left=0.7, right=10)
這裡,我們設定 x 軸的範圍從 0.7 到 10。同樣地,你可以使用 myplt.ylim()
函式來設定 y 軸的範圍。
內容解密:
myplt.xlim()
和myplt.ylim()
函式分別用於設定 x 軸和 y 軸的範圍。- 這些函式可以接受兩個引數:
left
和right
,用於設定軸的左邊界和右邊界。 - 設定新的座標軸範圍可以幫助我們更好地展示資料,特別是在資料分佈不均勻的情況下。
圖表翻譯:
此圖示展示瞭如何使用 Python 的 Matplotlib函式庫來設定座標軸的範圍。透過調整座標軸的範圍,我們可以更好地控制圖形的外觀和資料的展示。
flowchart TD A[取得預設範圍] --> B[設定新範圍] B --> C[繪製圖形] C --> D[展示資料]
圖表翻譯:
- 此圖表展示了設定座標軸範圍的過程。
- 首先,我們取得座標軸的預設範圍。
- 然後,我們設定新的座標軸範圍。
- 最後,我們繪製圖形並展示資料。
使用Matplotlib進行線圖繪製
在前面的章節中,我們已經學習瞭如何使用Matplotlib進行簡單的線圖繪製。現在,我們將更深入地探討線圖的設定和自訂。
設定軸限
在繪製線圖時,設定軸限是非常重要的。Matplotlib提供了xlim()
和ylim()
函式來設定x軸和y軸的限值。例如:
import matplotlib.pyplot as myplt
import numpy as mynp
x_axis = mynp.arange(100)
y_axis = mynp.arange(100)
myplt.plot(x_axis, y_axis)
myplt.xlim(0, 50)
myplt.ylim(0, 2000)
myplt.show()
這將設定x軸的限值為0到50,y軸的限值為0到2000。
線性和對數Scaling
Matplotlib提供了兩種Scaling方式:線性(linear)和對數(log)。線性Scaling是指在軸上具有固定差異的 Scaling 方式,而對數Scaling是指在軸上具有倍數差異的 Scaling 方式。例如:
import matplotlib.pyplot as myplt
import numpy as mynp
x_axis = mynp.arange(100000)
y_axis = mynp.arange(100000)
myplt.plot(x_axis, y_axis)
myplt.xscale('linear')
myplt.yscale('log')
myplt.show()
這將設定x軸為線性Scaling,y軸為對數Scaling。
物件導向程式設計(OOP)方式
Matplotlib也提供了物件導向程式設計(OOP)方式來繪製線圖。例如:
import matplotlib.pyplot as myplt
fig, ax = myplt.subplots()
ax.plot([1, 2, 3], [1, 2, 3])
ax.set_title('Line Plot Example')
ax.set_xlabel('X Axis')
ax.set_ylabel('Y Axis')
myplt.show()
這將建立一個新的圖表,並使用OOP方式來設定圖表的屬性。
內容解密:
在上面的例子中,我們使用了xlim()
和ylim()
函式來設定軸限。這些函式可以用來設定x軸和y軸的限值。另外,我們也使用了xscale()
和yscale()
函式來設定 Scaling 方式。這些函式可以用來設定線性或對數 Scaling 方式。
圖表翻譯:
下圖是使用Matplotlib繪製的線圖。圖中展示瞭如何使用xlim()
和ylim()
函式來設定軸限,以及如何使用xscale()
和yscale()
函式來設定 Scaling 方式。
flowchart TD A[設定軸限] --> B[設定 Scaling 方式] B --> C[繪製線圖] C --> D[顯示圖表]
這個流程圖展示瞭如何使用Matplotlib進行線圖繪製,並設定軸限和 Scaling 方式。
使用Python進行資料視覺化:線圖建立與自訂
資料視覺化是將資料轉換為圖形以便更容易理解和分析的過程。Python提供了多種工具和技術來建立高品質的資料視覺化,包括線圖、條形圖、餅圖、散點圖等。在本文中,我們將關注於使用Python的matplotlib函式庫建立和自訂線圖。
線圖建立
要建立一個線圖,我們需要先匯入必要的函式庫,包括numpy和matplotlib。然後,我們可以使用numpy的arange函式生成一系列的x值,並計算對應的y值。接下來,我們可以使用matplotlib的plot函式建立線圖。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 21)
y = x ** 3
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y)
axes.set(xlabel='X軸值', ylabel='Y軸值', title='立方圖')
axes.grid()
plt.show()
線圖自訂
除了建立基本的線圖外,我們還可以自訂線圖的外觀,包括線型、顏色、標記等。例如,我們可以使用linestyle引數設定線型,使用color引數設定顏色,使用marker引數設定標記。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1, 21)
y = x ** 3
fig = plt.figure()
axes = fig.add_subplot(111)
axes.plot(x, y, linestyle='--', color='red', marker='o')
axes.set(xlabel='X軸值', ylabel='Y軸值', title='立方圖')
axes.grid()
plt.show()
資料視覺化:探索多樣化圖表
資料視覺化是資料分析和科學中的一個重要工具,能夠幫助我們更好地理解和解釋資料。Matplotlib 是 Python 中的一個強大資料視覺化函式庫,提供了多種圖表型別來滿足不同需求。在本章中,我們將探索使用 Matplotlib 來建立不同型別的圖表,包括條形圖、餅圖、直方圖和散點圖等。
條形圖
條形圖是一種常見的圖表型別,能夠用於展示分類別資料之間的比較。Matplotlib 提供了多種條形圖型別,包括垂直條形圖、水平條形圖、堆積疊條形圖和分組條形圖等。透過自定義條形圖的顏色、寬度、底部位置和對齊方式,可以更好地展示資料的特點。
垂直條形圖
垂直條形圖是最基本的條形圖型別,能夠用於展示不同分類別之間的比較。透過使用 myplt.bar()
函式,可以建立一個簡單的垂直條形圖。
水平條形圖
水平條形圖與垂直條形圖相似,但其條形的方向是水平的。透過使用 myplt.barh()
函式,可以建立一個簡單的水平條形圖。
堆積疊條形圖
堆積疊條形圖是一種特殊的條形圖型別,能夠用於展示不同分類別之間的累積效果。透過使用 myplt.bar()
函式並設定 bottom
引數,可以建立一個堆積疊條形圖。
分組條形圖
分組條形圖是一種特殊的條形圖型別,能夠用於展示不同分類別之間的比較。透過使用 myplt.bar()
函式並設定 width
引數,可以建立一個分組條形圖。
餅圖
餅圖是一種圓形的圖表型別,能夠用於展示不同分類別之間的比例關係。透過使用 myplt.pie()
函式,可以建立一個簡單的餅圖。
直方圖
直方圖是一種特殊的圖表型別,能夠用於展示資料的分佈情況。透過使用 myplt.hist()
函式,可以建立一個簡單的直方圖。
散點圖
散點圖是一種特殊的圖表型別,能夠用於展示兩個變數之間的關係。透過使用 myplt.scatter()
函式,可以建立一個簡單的散點圖。
子圖
子圖是一種特殊的圖表型別,能夠用於展示多個圖表在同一個視窗中。透過使用 myplt.subplot()
函式,可以建立一個子圖。
圖表翻譯:
graph LR A[資料視覺化] --> B[Matplotlib] B --> C[條形圖] C --> D[垂直條形圖] C --> E[水平條形圖] C --> F[堆積疊條形圖] C --> G[分組條形圖] B --> H[餅圖] B --> I[直方圖] B --> J[散點圖] B --> K[子圖]
內容解密:
在本章中,我們探索了使用 Matplotlib 來建立不同型別的圖表,包括條形圖、餅圖、直方圖和散點圖等。透過自定義圖表的外觀和設定不同的引數,可以更好地展示資料的特點。同時,我們也學習瞭如何使用子圖來展示多個圖表在同一個視窗中。這些知識將有助於我們更好地理解和解釋資料。
從使用者經驗視角來看,有效地運用 Matplotlib 新增圖例能大幅提升資料視覺化的清晰度和易讀性。本文深入探討了 Matplotlib 圖例功能的三種呼叫方式:legend()
、legend(labels)
和 legend(handles, labels)
,並佐以程式碼示例,清晰地展示瞭如何在不同情境下選擇合適的用法。技術限制方面,自動標籤功能有時難以滿足複雜圖表的精細化需求,需要使用者手動設定標籤或控制程式碼。對於追求圖表客製化的使用者,legend(handles, labels)
提供了最大的彈性,但也增加了程式碼的複雜度。展望未來,Matplotlib 或將發展更智慧的圖例自動生成機制,降低使用者的操作門檻。對於資料視覺化開發者而言,掌握 Matplotlib 圖例的靈活運用,是提升圖表表達能力的關鍵一步。