为啥 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,为啥它受到保护?

为啥需要softmax函数?为啥不简单归一化?

为啥 g++ 需要 libstdc++.a?为啥不是默认值?

为啥或为啥不在 C++ 中使用 memset? [关闭]

为啥临时变量需要更改数组元素以及为啥需要在最后取消设置?

为啥 CAP 定理中的 RDBMS 分区不能容忍,为啥它可用?