2012-04-04 174 views
18

我试图制作一些PCA数据的散点图。我做了一些相当典型的代码:当edgecolor ='none'时Matplotlib标记消失

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

你可以尝试'markersize'设置为一个较大的值。 'markersize'可以是'plot()'的一个kwarg,或者你可以缩写为'ms'。例如:'...,markersize = 20,...' – bernie 2012-04-04 19:33:54

+0

对于那些试图用'matplotlib.errorbar'使用下面推荐的'markeredgecolor = None'来做到这一点的人,并没有删除勾勒符号的黑色。相反'markeredgecolor ='none''did work(这些符号不可见)。毫不奇怪,似乎导致这个问题的错误在过去的3年里得到了修复。 – 2015-04-09 18:31:37

回答

15

我认为这是几个月前被修正了一个错误:https://github.com/matplotlib/matplotlib/pull/598

不管你多大做出标记,或者如果您使用marker='o'代替'.',如果使用markeredgecolor='none'他们将是无形的。

作为一种解决方法,您可以将边缘颜色设置为与脸部颜色相同。

4

在matplotlib 1.1

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

作品(注意None,而不是为markeredgecolor '无')。

设置markeredgewidth=0.0markeredgecolor=self.colors[k](正如Joe Kington所建议的)也应该起作用。

+0

'self.colors [k]'是什么意思?当我运行类似的代码时,它说'NameError:name'self'没有被定义'。 – LWZ 2013-07-30 04:14:08

+0

它来自问题。看起来好像OP在一个类中使用了这个命令,它有一个colors属性(这是一个字典)。如果您只是想使用代码行来绘制某些内容,您可以用任何matplotlib颜色替换它(例如像'green'这样的字符串)。 – bmu 2013-07-30 05:55:23

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')