Я пытаюсь понять, как работает countourf, поэтому я создал следующую простую функцию:
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.colors import ListedColormap
def example(vectorofpoints):
answerarray = []
for p in vectorofpoints:
if p[0]<0.9:
if p[1]<0.9:
answerarray.append(0)
else:
answerarray.append(1)
else:
if p[1]<0.9:
answerarray.append(2)
if p[1]>=0.9:
answerarray.append(3)
return np.array(answerarray)
Теперь я хотел бы отобразить значения в области [0.8,1.10] x [0.8,1.10], поэтому я сделал следующее:
colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')
cmap = ListedColormap(colors[:4])
Теперь я хочу, чтобы регионы, где пример = 0, были окрашены в красный цвет, регионы, где он равен 1, в синий и так далее.Обратите внимание, что я определил больше цветов, чем нужно.
Я сделал это:
xx1, xx2 = np.meshgrid(np.arange(0.8,1.10, 0.01),np.arange(0.8,1.10, 0.01))
Z = predict2(meanvectorlist,covmatrixlist,np.array([xx1.ravel(), xx2.ravel()]).T)
Z = Z.reshape(xx1.shape)
plt.contourf(xx1, xx2, Z,cmap=cmap, alpha=0.4,linewidths=2)
Я ожидал область, разделенную на квадраты:
- x <0,9, у<0,9 красный квадрат </li>
- x <0,9, y> 0,9 синий квадрат
- x> = 0,9, y <0,9 светло-зеленый квадрат </li>
- x> = 0,9, y> = 0,9серый квадрат
Вместо этого я получаю следующее изображение ![enter image description here](https://i.stack.imgur.com/soXgt.png)
- Почему серый квадрат на самом деле голубой?
- Почемупоявляется небольшая вертикальная область светло-зеленого цвета?
- Почему на границах голубой области появляется серая линия?