【发布时间】:2017-05-15 03:37:17
【问题描述】:
pyplot.scatter 允许将与组对应的数组传递给c=,然后根据这些组对点进行着色。但是,这似乎不支持在没有专门分别绘制每个组的情况下生成图例。
因此,例如,可以通过迭代组并分别绘制每个组来生成带有彩色组的散点图:
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])
但我无法想出用第二种策略生成相应图例的方法。我遇到的所有示例都对组进行了迭代,这似乎……不太理想。我知道我可以手动生成图例,但这似乎过于繁琐。
【问题讨论】:
标签: python matplotlib legend scatter