在 matplotlib 中从 PolyCollection 中移除边线

4
我正在类似下面这样用线条绘制一些数据:

poly = PolyCollection(vertices, array=s, edgecolors='w', linewidths=.0001)

有没有一种方法可以完全隐藏每个单元格周围的边缘线?上述代码试图通过将边缘颜色设置为白色和小线宽来实现此目的。但是,边缘线仍然会显示出来。而且,传递0给线宽似乎也无法做到这一点。
我还尝试了将edgecolor设置为nonelinewidth设置为0,但均未成功。
有何建议?

你可以通过设置 edgecolor='none' 来实现。 - Ajean
1
另外还有edgecolor="face",如果edgecolor="none"无效的话。顺便说一下,在这种情况下,imshow会更有效率。然而,如果您的单元格间距不相等,则pcolormesh/pcolor是您唯一的选择。 - Joe Kington
1个回答

3

有多种方法可以隐藏边缘。感谢评论区中Ajean提供的额外建议。

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

vertices = [
    [(0.2,0.2), (0.7,0.3), (0.1, 0.6)],
    [(0.5,0.5), (0.6 ,0.8), (0.8, 0.6)]
]

poly0 = mpl.collections.PolyCollection(vertices)
poly1 = mpl.collections.PolyCollection(vertices, edgecolor="none")
poly2 = mpl.collections.PolyCollection(vertices, linewidths=0)
poly3 = mpl.collections.PolyCollection(vertices, color="blue")

fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, figsize=(10,10))
ax1.add_collection(poly0)
ax2.add_collection(poly1)
ax3.add_collection(poly2)
ax4.add_collection(poly3)

plot


好的建议。我会再深入研究一下。这对我的情况不一定适用,因为我正在使用自定义颜色条,所以无法使用颜色参数。 - durden2.0
1
对我来说,linewidthlinewidths 看起来都有同样的作用,它们都不能隐藏线条。我有什么遗漏吗? - durden2.0
我的示例唯一的区别是我除了顶点之外还传递了一个数组。也许这就是问题所在。 - durden2.0
1
color 只设置面颜色和边缘颜色相同。如果你想彻底去除边缘颜色,把它设为 'none' 即可。 - Ajean
我正在使用 1.4.0 版本,并将 edgecolor 设置为 none,但仍无法实现效果。也许是我使用的颜色条? - durden2.0
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接