Как назначить правильную цветовую карту для counturf в Python - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь понять, как работает 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)

Я ожидал область, разделенную на квадраты:

  1. x <0,9, у<0,9 красный квадрат </li>
  2. x <0,9, y> 0,9 синий квадрат
  3. x> = 0,9, y <0,9 светло-зеленый квадрат </li>
  4. x> = 0,9, y> = 0,9серый квадрат

Вместо этого я получаю следующее изображение enter image description here

  1. Почему серый квадрат на самом деле голубой?
  2. Почемупоявляется небольшая вертикальная область светло-зеленого цвета?
  3. Почему на границах голубой области появляется серая линия?
...