簡體   English   中英

matplotlib中的imshow遮罩顫抖圖

[英]Mask quiver plot with imshow in matplotlib

我有一個顫抖圖,下面顯示了一個輪廓圖。 這些都由二維數組定義。

我希望能夠在圖形上方“繪制”對象,例如在圖形上某處覆蓋一個10x10黑色正方形。 該對象應為黑色,圖表的其余部分不應隱藏。

plt.contourf(X, Y, h)
plt.colorbar()
plt.quiver(X[::2,::2], Y[::2,::2], u[::2,::2], v[::2,::2])
plt.show()

什么是這樣做的好方法?

如果按對象表示多邊形,則可以執行此操作。

verts = [
    (0., 0.), # left, bottom
    (0., 1.), # left, top
    (1., 1.), # right, top
    (1., 0.), # right, bottom
    (0., 0.), # ignored
    ]

codes = [Path.MOVETO,
         Path.LINETO,
         Path.LINETO,
         Path.LINETO,
         Path.CLOSEPOLY,
         ]

path = Path(verts, codes)

fig = plt.figure()
ax = fig.add_subplot(111)
patch = patches.PathPatch(path, facecolor='black')
ax.add_patch(patch)

ax.set_xlim(-2,2)
ax.set_ylim(-2,2)
plt.show()

Matplotlib 路徑教程中的代碼

@Favo的答案顯示了這種方式,但是繪制多邊形(可能僅是矩形)時,您無需費心Path Matplotlib將為您做到這一點。 只需使用PolygonRectangle類:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(1,1)

# Directly instantiate polygons
coordinates = [[0.5,0.6],[0.5,0.7],[0.55,0.75],[0.6,0.7],[0.6,0.6]]
poly = plt.Polygon(coordinates, facecolor='black')
ax.add_patch(poly)

# If you just need a Rectangle, then there is a class for that too
rect = plt.Rectangle([0.2,0.2], 0.1, 0.1, facecolor='red')
ax.add_patch(rect)

plt.show()

結果: 在此處輸入圖片說明

因此,要實現您的目標,只需創建一個黑色矩形即可“覆蓋”繪圖的各個部分。 另一種方法是使用蒙版數組首先僅顯示顫動圖和輪廓圖的一部分: http : //matplotlib.org/examples/pylab_examples/contourf_demo.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM