我正在尝试绘制有限元数据的集合,并使用彩色补丁来表示每个元素中的值。
不幸的是,当我绘制补丁时,相邻补丁之间存在很小的间隙。
我在下面创建了一个示例脚本来描述该问题。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from matplotlib.collections import PatchCollection
nodes = [[0.1, 0.1],
[0.25, 0.1],
[0.75, 0.9],
[0.1, 0.9],
[0.9, 0.1],
[0.9, 0.9]]
elems =[[0,1, 2, 3],
[1, 4, 5, 2]]
patches = []
for elem in elems:
xy = np.array([nodes[i] for i in elem])
elem = mpatches.Polygon(xy, closed=True, snap=False, antialiased=True)
patches.append(elem)
col = PatchCollection(patches)
fig, ax = plt.subplots(1, 1)
ax.add_collection(col)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这会产生以下带有不需要的间隙的图。调整绘图窗口的形状会改变间隙的外观。
目前我的解决方法是设置 col.set_edgecolor("face")` 并包含一个小的边缘宽度。然而,当存在一系列不同的补丁大小时,很难设置边缘来减少伪影。
编辑:正如 @tdy 指出的那样,dpi …