我正在尝试制作一些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上运行。
感谢您的帮助。
答案 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.0
或markeredgecolor=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')