如何在 Matplotlib 中製作散點圖的圖例
Suraj Joshi
2023年1月30日
2020年11月7日
圖例是對圖中各種元素的簡單描述。我們可以使用 matplotlib.pyplot.legend
函式來生成散點圖的圖例。
在 Maptlotlib 2D
散點圖中新增圖例
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y1=[i**2 for i in x]
y2=[2*i+1 for i in x]
plt.scatter(x,y1,marker="x",color='r',label="x**2")
plt.scatter(x,y2,marker="o",color='b',label="2*x+1")
plt.legend()
plt.show()
輸出:
我們在圖中有兩個單獨的散點圖:一個用 x
表示,另一個用 o
標記。我們在生成圖例時給每個散點圖分配 label
作為標籤。然後,我們使用 legend()
函式在圖中建立圖例,最後使用 show()
方法顯示整個圖。
我們也可以直接將一個標籤元組作為引數傳遞給 legend()
方法,並使用 legend()
方法的 loc
引數改變圖例的位置。
import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y1=[i**2 for i in x]
y2=[2*i+1 for i in x]
plt.scatter(x,y1,marker="x",color='r')
plt.scatter(x,y2,marker="o",color='b')
plt.legend(("x**2","2*x+1"),loc="center left")
plt.show()
輸出:
這個過程會建立一個帶有兩個散點圖的圖形,並在軸的邊框的中左位置放置一個圖例。
在 Matplotlib 3D
散點圖上新增圖例
import matplotlib.pyplot as plt
x=[1,2,3,4,5]
y=[2,1,4,5,6]
z1=[i+j for (i,j) in zip(x, y)]
z2=[3*i-j for (i,j) in zip(x, y)]
axes = plt.subplot(111, projection='3d')
axes.plot(x,y,z1,"x",label="x+y")
axes.plot(x,y,z2,"o",label="3*x-y")
plt.legend(loc="upper left")
plt.show()
輸出:
要為 3D
散點圖建立圖例,我們使用 plot()
方法而不是 scatter()
方法;這是因為 legend()
方法不支援 Axes3D
例項的 scatter()
方法返回的 Patch3DCollection
。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn