如何使用 matplotlib 合并补丁
How merge patches with matplotlib
有什么方法可以合并具有公共边的补丁吗?
我使用矩阵生成一系列适当样式的补丁,以了解边缘颜色。
更详细:
- 我读了一张图片
- 我调整图像大小并将其分成 64x64 块
- 在每个图块上循环并构建一个值矩阵,每个图块一个。
结果是一个带有基于矩阵值设置样式的补丁的图形。
以下代码工作正常:
for row in range(0, h, dim):
for col in range(0, w, dim):
c_map2 = [(1,0,0,1),(0,0,1,1),(0.2,0.2,0.2,1),(0,0,0,0),(0,1,0,1)] #position 3 will be not visible
_p = patches.Rectangle((row, col), dim - 1, dim - 1, linewidth=1.5, fill=False, edgecolor=c_map2[int(y_class2)])
plt.gca().add_patch(_p)
这里是矩阵和图形的例子:
Show classes matrix
[[3. 3. 3. 3.]
[3. 4. 4. 4.]
[4. 4. 2. 2.]
[3. 2. 1. 2.]]
如何删除相同颜色块之间的边缘,只保留相同颜色区域的外边缘?
谢谢。
我分别使用 matplotlib contour 和 contourf 方法解决了绘制 ROI 周长和填充 ROI 的问题。
更详细:
我为我需要绘制轮廓的值 x 创建了一个 1 和 2 的掩码,其中 x 被 1 替换,所有其他值被 2 替换。
new_matrix = np.where(old_matrix == 0, 1,2)
我定义了两个级别:
level1 = [0,1]
level2 = [1,2]
我绘制了轮廓和面积:
ax2.contour(new_matrix, levels1, colors='yellow', linewidths=1, zorder=1)
ax3.contourf(new_matrix, levels1, colors='yellow', alpha=0.5)
ax3.contourf(new_matrix, levels2, colors='gray', alpha=0)
有什么方法可以合并具有公共边的补丁吗? 我使用矩阵生成一系列适当样式的补丁,以了解边缘颜色。 更详细:
- 我读了一张图片
- 我调整图像大小并将其分成 64x64 块
- 在每个图块上循环并构建一个值矩阵,每个图块一个。
结果是一个带有基于矩阵值设置样式的补丁的图形。
以下代码工作正常:
for row in range(0, h, dim):
for col in range(0, w, dim):
c_map2 = [(1,0,0,1),(0,0,1,1),(0.2,0.2,0.2,1),(0,0,0,0),(0,1,0,1)] #position 3 will be not visible
_p = patches.Rectangle((row, col), dim - 1, dim - 1, linewidth=1.5, fill=False, edgecolor=c_map2[int(y_class2)])
plt.gca().add_patch(_p)
这里是矩阵和图形的例子:
Show classes matrix
[[3. 3. 3. 3.]
[3. 4. 4. 4.]
[4. 4. 2. 2.]
[3. 2. 1. 2.]]
如何删除相同颜色块之间的边缘,只保留相同颜色区域的外边缘?
谢谢。
我分别使用 matplotlib contour 和 contourf 方法解决了绘制 ROI 周长和填充 ROI 的问题。 更详细:
我为我需要绘制轮廓的值 x 创建了一个 1 和 2 的掩码,其中 x 被 1 替换,所有其他值被 2 替换。
new_matrix = np.where(old_matrix == 0, 1,2)
我定义了两个级别:
level1 = [0,1] level2 = [1,2]
我绘制了轮廓和面积:
ax2.contour(new_matrix, levels1, colors='yellow', linewidths=1, zorder=1)
ax3.contourf(new_matrix, levels1, colors='yellow', alpha=0.5)
ax3.contourf(new_matrix, levels2, colors='gray', alpha=0)