【发布时间】:2022-08-19 05:03:00
【问题描述】:
我在提取以下数据的确切轮廓时遇到了困难:(您只需查看数据就可以看到轮廓)
data = np.array(
[[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277]])
如果我绘制它:
plt.imshow(data)
但是,当我尝试使用以下方法提取轮廓时:
plt.contour(data, levels = np.unique(data))
如您所见,轮廓不遵循实际数据的尖角。如果我覆盖两个图:
这是完整的代码:
import numpy as np
import matplotlib.pyplot as plt
data = np.array([[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 1. , 1. ],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277],
[ 1.46184395, 1.46184395, 1.46184395, 4.24552277, 4.24552277]])
plt.imshow(data)
plt.show()
plt.contour(data, levels=np.unique(data), cmap=\"jet\")
plt.colorbar()
-
如果您将轮廓级别设置为与您的数据完全相同,那么对于给定像素将位于边界的哪一侧,这是一个舍入错误。如果您希望轮廓沿着边界,请设置您的唯一值之间的级别。
-
@JodyKlymak 嗯,你会怎么做?您所说的“在您的独特价值观之间”是什么意思?
标签: python matplotlib