給定一個二維陣列
172,47,117
192,67,251
195,103,9
211,21,242
目標是將標記(例如,形狀、線條)與下面的二進制 2D 坐標重疊放置到 2D 影像上
0,1,0
0,0,0
0,1,0
1,1,0
具體來說,如果單元格等效于 ,則將放置一個標記1。
預期輸出如下。在這個例子中,標記是水平紅線的形式。但是,標記可以是使代碼更直接的任何其他形狀。

我可以知道如何使用 Python 中的任何圖形包來實作這一點嗎?
上述坐標可以通過以下方式重現
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
X=np.random.randint(256, size=(4, 3))
arrshape=np.random.randint(2, size=(4, 3))
fig = plt.figure(figsize=(8,6))
plt.pcolormesh(X,cmap="plasma")
plt.title("Plot 2D array")
plt.colorbar()
plt.show()
uj5u.com熱心網友回復:
你可以拋出一個scatter:
x,y = X.shape
xs,ys = np.ogrid[:x,:y]
# the non-zero coordinates
u = np.argwhere(arrshape)
plt.scatter(ys[:,u[:,1]].ravel() .5,
xs[u[:,0]].ravel() 0.5,
marker='x', color='r', s=100)
輸出:

uj5u.com熱心網友回復:
一種方法是使用 matplotlib
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(0)
X=np.random.randint(256, size=(4, 3))
arrshape=np.random.randint(2, size=(4, 3))
fig = plt.figure(figsize=(8,6))
plt.pcolormesh(X,cmap="plasma")
plt.title("Plot 2D array")
plt.colorbar()
markers = [
[0,1,0],
[0,0,0],
[0,1,0],
[1,1,0]]
draw = []
for y, row in enumerate(markers):
prev = 0
for x, v in enumerate(row):
if v == 1:
plt.plot([x 0.25, x 0.75], [y 0.5, y 0.5], 'r-', linewidth=5)
if prev == 1:
plt.plot([x-0.5, x 0.5], [y 0.5, y 0.5], 'r-', linewidth=5)
prev = v
plt.show()
輸出:( 因為你的標記是顛倒的)

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/380497.html
標籤:Python matplotlib 图形 海生 2d
