pyplot.scatter
允許傳遞到c=
與數組對應的數組,然後根據這些組着色點。但是,這似乎不支持在沒有分別繪製每個組的情況下生成圖例。散點圖與圖例顏色的傳說沒有多次調用plt.scatter
因此,舉例來說,一個散點圖用彩色可通過遍歷組和繪製每個分別生成基團:
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
feats = load_iris()['data']
target = load_iris()['target']
f, ax = plt.subplots(1)
for i in np.unique(target):
mask = target == i
plt.scatter(feats[mask, 0], feats[mask, 1], label=i)
ax.legend()
其產生:
我可以實現一個類似的外觀,但沒有迭代每個組:
f, ax = plt.subplots(1)
ax.scatter(feats[:, 0], feats[:, 1], c=np.array(['C0', 'C1', 'C2'])[target])
但我找不出一種方法來生成相應的圖例與這第二個策略。我所遇到的所有示例都反覆遍歷了這些組,這似乎不太理想。我知道我可以手動生成一個圖例,但似乎過於繁瑣。
我知道你可以在seaborn中做到這一點,但我的實際使用案例(我在繪製3D散點圖)seaborn不支持。在引擎蓋下,seaborn正在使用matplotlib來實際進行繪圖 - 我想我可以通過並瞭解seaborn如何在pairplot(或regplot)中生成散點圖和相關的圖例。我的猜測是它像在我的第一批示例代碼中那樣循環着各組。 – user3014097