当 edgecolor = 'none' 时 Matplotlib 标记消失
Posted
技术标签:
【中文标题】当 edgecolor = \'none\' 时 Matplotlib 标记消失【英文标题】:Matplotlib markers disappear when edgecolor = 'none'当 edgecolor = 'none' 时 Matplotlib 标记消失 【发布时间】:2012-04-18 13:26:15 【问题描述】:我正在尝试制作一些 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 上运行。
感谢您的帮助。
【问题讨论】:
您可以尝试将markersize
设置为更大的值。 markersize
可以是 plot()
的 kwarg,也可以缩写为 ms
。例如:..., markersize=20, ...
对于那些试图通过matplotlib.errorbar
使用下面推荐的markeredgecolor=None
来执行此操作的人并没有删除黑色轮廓符号。取而代之的是markeredgecolor='none'
did 工作(符号不是不可见的)。毫不奇怪,导致这个问题的错误似乎在过去 3 年中已经修复。
【参考方案1】:
试试这个:
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')
【讨论】:
【参考方案2】:在 matplotlib 1.1 中
>> plt.plot(pca[:,0], pca[:,1], '.', ms=3, markerfacecolor=self.colors[k],
... markeredgecolor=None)
有效(注意 None
而不是 markeredgecolor 的 'none')。
设置 markeredgewidth=0.0
或 markeredgecolor=self.colors[k]
(由 Joe Kington 建议)也应该有效。
【讨论】:
self.colors[k]
是什么意思?当我运行类似的代码时,它会显示NameError: name 'self' is not defined
。
取自问题。似乎 OP 在一个类中使用这个命令,它有一个颜色属性(这是一个字典)。如果您只想使用代码行来绘制某些内容,则可以将其替换为任何 matplotlib 颜色(例如,像“绿色”这样的字符串)。
目前(较新的matplotlib),应该使用markedgecolor="None"
,见answer。【参考方案3】:
我认为这是几个月前修复的错误:https://github.com/matplotlib/matplotlib/pull/598
无论标记有多大,或者使用 marker='o'
而不是 '.'
,如果使用 markeredgecolor='none'
,它们都将不可见。
作为一种解决方法,您可以将边缘颜色设置为与面部颜色相同。
【讨论】:
以上是关于当 edgecolor = 'none' 时 Matplotlib 标记消失的主要内容,如果未能解决你的问题,请参考以下文章