23

我正在尝试制作一些 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 上运行。

谢谢你的帮助。

4

3 回答 3

19

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

无论您制作的标记有多大,或者如果您使用marker='o'而不是'.',如果您使用markeredgecolor='none'.

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

于 2012-04-05T02:20:20.143 回答
6

在 matplotlib 1.1

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

有效(注意Nonemarkeredgecolor的而不是'none')。

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

于 2012-04-05T13:01:47.230 回答
5

尝试这个:

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')
于 2016-11-16T11:54:04.260 回答