plt.scatter(X[:,0],X[:,1],c = y, alpha=.4) plt.legend(np.unique(y)) 只显示1个图例
时间: 2024-02-19 07:58:18 浏览: 101
这是因为 `plt.legend()` 函数只有一个参数 `np.unique(y)`,它返回的是 y 数组中所有唯一值的列表。因此,`plt.legend()` 只会显示一个图例,即 y 数组中所有唯一值的列表。
如果想要为每个唯一的 y 值都显示一个图例,可以使用循环来逐个添加图例。例如:
```python
import matplotlib.pyplot as plt
import numpy as np
X = np.random.randn(100, 2)
y = np.random.randint(0, 3, 100)
for label in np.unique(y):
plt.scatter(X[:, 0][y == label], X[:, 1][y == label], label=label, alpha=0.4)
plt.legend()
plt.show()
```
这段代码会为每个唯一的 y 值都添加一个图例。其中,`np.unique(y)` 返回的是 y 数组中所有唯一值的列表,循环中的 `label` 变量依次取值于该列表中的每个值。在 `plt.scatter()` 函数中,我们使用 `label` 参数来指定当前点的图例标签,这样每个唯一的 y 值都对应一个图例标签。最后,我们使用 `plt.legend()` 函数来添加图例,它会自动将所有指定的标签添加到图例中。
相关问题
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="winter", label=label9) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="gnuplot2", label=label5) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="hot", label=label6) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="autumn", label=label7) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="terrain", label=label8) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="Oranges", label=label1) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="tab20b", label=label2) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="cool", label=label4) plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="rainbow", label=label3)
您想要绘制多个散点图,每个散点图使用不同的颜色映射。您可以按照以下代码进行绘制:
```python
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="winter", label=label9)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="gnuplot2", label=label5)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="hot", label=label6)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="autumn", label=label7)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="terrain", label=label8)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="Oranges", label=label1)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="tab20b", label=label2)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="cool", label=label4)
plt.scatter(X_pca[:, 0], X_pca[:, 1], marker='o', s=100, c=kpredictions, alpha=1, cmap="rainbow", label=label3)
plt.legend()
plt.show()
```
这段代码会按照您指定的不同颜色映射绘制多个散点图,并在图例中显示相应的标签。
运行这段代码import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 加载鸢尾花数据集 iris = load_iris() X = iris.data[:, :2] # 只使用前两个特征 y = iris.target # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3, random_state=42) # 训练KNN模型 knn = KNeighborsClassifier(n_neighbors=5) knn.fit(X_train, y_train) # 可视化训练集和测试集 plt.figure(figsize=(10, 6)) plt.scatter(X_train[:, ], X_train[:, 1], c=y_train, cmap='viridis', label='Train') plt.scatter(X_test[:, ], X_test[:, 1], c=y_test, cmap='viridis', marker='x', label='Test') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.legend() plt.show() # 可视化KNN分类结果 plt.figure(figsize=(10, 6)) h = .02 # 网格步长 x_min, x_max = X[:, ].min() - .5, X[:, ].max() + .5 y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) Z = knn.predict(np.c_[xx.ravel(), yy.ravel()]) Z = Z.reshape(xx.shape) plt.contourf(xx, yy, Z, cmap='viridis', alpha=.5) plt.scatter(X_train[:, ], X_train[:, 1], c=y_train, cmap='viridis', label='Train') plt.scatter(X_test[:, ], X_test[:, 1], c=y_test, cmap='viridis', marker='x', label='Test') plt.xlabel('Sepal length') plt.ylabel('Sepal width') plt.legend() plt.show()
这段代码是使用 sklearn 库中的 KNN 算法对鸢尾花数据集进行分类,并将训练集和测试集的结果进行可视化展示。
首先,加载鸢尾花数据集,并只使用前两个特征进行分类。然后,将数据集划分为训练集和测试集,其中测试集占总数据集的 30%。
接下来,使用 KNN 算法对训练集进行拟合,并可视化训练集和测试集的散点图,其中样本点的颜色表示其所属的类别。
最后,使用 KNN 算法对整个特征空间进行分类,并用等高线图展示分类结果,同时也将训练集和测试集的散点图进行可视化展示。
阅读全文
相关推荐














