当edgecolor ='none'时,Matplotlib标记消失

时间:2012-04-04 19:22:32

标签: python matplotlib python-2.7 markers

我正在尝试制作一些PCA数据的散点图。我做了一些非常典型的代码:

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

我希望它只显示没有轮廓的标记面颜色。问题是当markeredgecolor ='none'时,标记完全消失。当我设置markerfacecolor ='none'或颜色并删除markeredgecolor时,它会像预期的那样工作。

我刚刚将matplotlib,numpy等更新到最新版本,在Python 2.7上运行。

感谢您的帮助。

3 个答案:

答案 0 :(得分:16)

我认为这是几个月前修复的错误:https://github.com/matplotlib/matplotlib/pull/598

无论您制作标记的大小,或者使用marker='o'代替'.',如果您使用markeredgecolor='none',它们都将不可见。

作为一种解决方法,您只需将边缘颜色设置为与面部颜色相同即可。

答案 1 :(得分:4)

在matplotlib 1.1中

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

有效(请注意{marneredgecolor的None而不是'none'。

设置markeredgewidth=0.0markeredgecolor=self.colors[k](由Joe Kington建议)也应该有用。

答案 2 :(得分: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')