在同一图上对散点图和轮廓线f使用相同的颜色

时间:2019-01-01 17:12:49

标签: python matplotlib scatter-plot contour

我必须绘制分类器的决策边界以及用于训练分类器的样本(带有标签),因此我使用散点图和轮廓线。我找不到一种为两个函数使用相同颜色的方法,当我指定颜色序列时,散点图效果很好,但边界的颜色却不符合我期望的顺序。

这是我的代码:

import numpy as np
import sklearn.naive_bayes as nb
import matplotlib.pyplot as plt
clf = nb.GaussianNB() 
X = np.zeros((4, 2), dtype=int)
X[0, :] = 10
X[1, :] = 20
X[2, :] = 30
X[3, :] = 40
Y = [0, 1, 2, 3]
clf.fit(X, Y)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max,0.1))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.figure(figsize=(8,8))
colors_ = ['red', 'yellow', 'cyan', 'blue']
plt.contourf(xx, yy, Z, colors=colors_, alpha=0.5)
labels = ['dog', 'guitar', 'house', 'person']
for i in np.unique(Y):
    mask = Y == i
    plt.scatter(X[mask, 0], X[mask, 1], c=colors_[i], label=labels[i], 
edgecolors='k', alpha=0.8)
plt.legend()
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.title('Decision Boundaries of Naive Bayes Classifier')
plt.show()

图像应具有决策区域和散点,它们或多或少具有相同的颜色(即,黄色区域,其中大多数黄色点位于其中;红色区域,其中大多数红色点位于该区域,等等)。颜色上方的代码混合在一起(即,大多数黄色点所在的红色区域)。

我想这只是订购方面的问题,但我无法弄清楚。

0 个答案:

没有答案
相关问题