我想繪製一些使用Matplotlib輪廓的點。繪製輪廓點 - Matplotlib/Python
我有我想要繪製輪廓的標量場。 然而,我的ndarray具有尺寸0×20,但我的真實空間變化從-4到4
我可以利用這段代碼繪製該輪廓:
x, y = numpy.mgrid[-4:4:20*1j, -4:4:20*1j]
# Draw the scalar field level curves
cs = plt.contour(scalar_field, extent=[-4, 4, -4, 4])
plt.clabel(cs, inline=1, fontsize=10)
的問題是因爲我不得不在這個圖上繪製一些點,並且這些點是使用獲得的,也就是說,我得到的點隨着這個數組維數而變化。
我試圖繪製使用此代碼以下幾點:
def plot_singularities(x_dim, y_dim, steps, scalar_field, min_points, max_points, file_path):
"""
:param x_dim : the x dimension of the scalar field
:param y_dim : the y dimension of the scalar field
:param steps : the discretization of the scalar field
:param file_path : the path to save the data
:param scalar_field : the scalar_field to be plot
:param min_points : a set (x, y) of min points of the scalar field
:param max_points : a set (x, y) of max points of the scalar field
"""
min_points_x = min_points[0]
min_points_y = min_points[1]
max_points_x = max_points[0]
max_points_y = max_points[1]
plt.figure()
x, y = numpy.mgrid[-x_dim:x_dim:steps*1j, -y_dim:y_dim:steps*1j]
# Draw the scalar field level curves
cs = plt.contour(scalar_field, extent=[-x_dim, x_dim, -y_dim, y_dim])
plt.clabel(cs, inline=1, fontsize=10)
# Draw the min points
plt.plot(min_points_x, min_points_y, 'ro')
# Draw the max points
plt.plot(max_points_x, max_points_y, 'bo')
plt.savefig(file_path + '.png', dpi=100)
plt.close()
但我得到了這個形象:
這是不正確的。
如果我改變這一行:
cs = plt.contour(scalar_field, extent=[-x_dim, x_dim, -y_dim, y_dim])
對於一個:
cs = plt.contour(scalar_field)
我獲得所需的行爲,但程度不顯示我的真實數據空間,但尺寸不同。
最後,如果我沒有描繪出這些點(評論情節()線),我可以的程度,我想:
但我要繪製點。 這兩個數據都在相同的空間。 但是輪廓()函數允許我指定網格。 我可以找到一種方式來繪製點時做到這一點。
我想知道如何正確設置範圍,因爲我想。
預先感謝您。
這將有助於瞭解你的期望。 「數據空間」應該是什麼?點和輪廓都不正確,還是輪廓? – amd
如果你看第二個圖像,它是正確的(圖)。但是將範圍顯示爲ndarray維度(從0到20)。我想顯示它不同於我的數據空間(中心在0,0和-4到4之間)。我把我的「數據空間」稱作CG圖像空間(ndarray)和世界空間(我的真實數據空間)的概念。 – pceccon