为啥 matplotlib.PatchCollection 会弄乱补丁的颜色?
Posted
技术标签:
【中文标题】为啥 matplotlib.PatchCollection 会弄乱补丁的颜色?【英文标题】:Why is matplotlib.PatchCollection messing with color of the patches?为什么 matplotlib.PatchCollection 会弄乱补丁的颜色? 【发布时间】:2013-01-07 16:07:17 【问题描述】:我做了很多这样的补丁 -
node.shape = RegularPolygon((node.posX, node.posY),
6,
radius = node.radius,
edgecolor = 'none',
facecolor = node.fillColor,
zorder = node.zorder)
node.brushShape = RegularPolygon((node.posX, node.posY),
6,
node.radius * 0.8,
linewidth = 3,
edgecolor = (1,1,1),
facecolor = 'none',
zorder = node.zorder)
最初我只是像这样将它们直接放在我的轴上 -
self.plotAxes.add_artist(node.shape)
self.plotAxes.add_artist(node.brushShape)
效果很好。但现在我想将它们放入 PatchCollection 并将该 PatchCollection 放在轴上。但是,当我这样做时,我所有的形状都是蓝色的。我不明白只是放入一个集合是如何以某种方式改变颜色的。谁能帮我解决我需要做些什么来保持我输入的颜色值作为补丁的 faceColor ?
新代码是 -
node.shape = RegularPolygon((node.posX, node.posY),
6,
radius = node.radius,
edgecolor = 'none',
facecolor = node.fillColor,
zorder = node.zorder)
node.brushShape = RegularPolygon((node.posX, node.posY),
6,
node.radius * 0.8,
linewidth = 3,
edgecolor = (1,1,1),
facecolor = 'none',
zorder = node.zorder)
self.patches.append(node.shape)
self.patches.append(node.brushShape)
self.p = PatchCollection(self.patches)
self.plotAxes.add_collection(self.p)
【问题讨论】:
【参考方案1】:self.p = PatchCollection(self.patches, match_original=True)
默认情况下,补丁集合会覆盖给定的颜色 (doc),以便能够应用颜色映射、循环颜色等。这是collection
级别的功能(以及背后代码的动力)散点图)。
【讨论】:
@pceccon 感谢您发现拼写错误。我修好了,很抱歉编辑被拒绝了。以上是关于为啥 matplotlib.PatchCollection 会弄乱补丁的颜色?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?