Подтвердить что ты не робот

Маркеры Matplotlib исчезают, когда edgecolor = 'none'

Я пытаюсь сделать график рассеяния некоторых данных PCA. Я делаю довольно типичный код:

plt.plot(pca[:,0], pca[:,1], '.',ms=3,  markerfacecolor = self.colors[k],
            markeredgecolor = 'none')

Я хочу, чтобы он отображал только цвет лица маркера без контура. Проблема в том, что маркеры полностью исчезают, когда markeredgecolor = 'none'. Когда я устанавливаю markfacecolor = 'none' или цвет и удаляю markeredgecolor, он работает, как и ожидалось.

Я только что обновил matplotlib, numpy и т.д. для самых новых версий, работающих на Python 2.7.

Спасибо за вашу помощь.

4b9b3361

Ответ 1

Я думаю, что это ошибка, которая была исправлена ​​несколько месяцев назад: https://github.com/matplotlib/matplotlib/pull/598

Независимо от того, насколько велики вы создаете маркеры или используете marker='o' вместо '.', они будут невидимы, если вы используете markeredgecolor='none'.

В качестве обходного пути вы можете просто установить цвета ребер так же, как цвета лица.

Ответ 2

В matplotlib 1.1

>> plt.plot(pca[:,0], pca[:,1], '.', ms=3, markerfacecolor=self.colors[k],
...          markeredgecolor=None)

работает (обратите внимание на None вместо "none" для markeredgecolor).

Настройка markeredgewidth=0.0 или markeredgecolor=self.colors[k] (как предложено Джо Кингтоном) тоже должна работать.

Ответ 3

Попробуйте следующее:

x = np.array(np.random.rand(10))
y = np.array(np.random.rand(10))
c = np.arange(len(x))
plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,linewidths=0)

Или это тоже хороший вариант:

plt.scatter(x,y, c=c, s=500, cmap = plt.cm.Paired, alpha = 0.5,edgecolor='face')