带 matplotlib 的砖墙

Brick wall with matplotlib

我正在编写一个关于孤子穿过势垒的程序,我正试图让势垒看起来像一个真实的势垒,也就是说,用砖块做成。问题是我找不到如何绘制 'brick' 纹理。我使用 fill_between(),但如果有另一个选项可以接受积木,我使用它就不会有问题。

我的代码是:

gs=GridSpec(8,1)  #7 rows and 1 column
state=self.fig.add_subplot(gs[2:,:])
light=self.fig.add_subplot(gs[0:2,:])
state.set_xlabel("Position ($x/ \xi$)")
state.set_ylabel("Density $|\psi|^2 \xi$")
state.plot(posit,phi2)
state.fill_between(posit,phi2,0,facecolor='0.80')
potential=state.twinx()
potential.plot(posit,pote,'g')

所有数组都定义明确等等。 运行程序的时候代码没有问题,但是如果可以的话我想知道怎么画砖

附上一张实景图,关卡暂时是空的,等着用砖砌起来,更直观。

这将是如何将砖墙放入图像中的示例

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches

f = lambda x, x0, sig: np.exp(-(x-x0)**2/sig**2)

x = np.linspace(0,10, 301)
pulse = f(x, 2, 0.5)*2.8


fig, ax = plt.subplots(figsize=(10,4))

image = plt.imread("brick_texture104.png")
#http://p78i.imgup.net/brick_textadf0.png
im = ax.imshow(image, extent=[4,4+512./256,0,933./256] ) # image is 512 x 933, 
ax.set_aspect("equal")
ax.plot(x, pulse, color="r", alpha = 0.7, lw=4 )

wall_patch = matplotlib.patches.Rectangle((4.5,0),1,3, transform=ax.transData )
im.set_clip_path(wall_patch)

ax.set_ylim([0,4])
ax.set_xlim([0,10])
plt.show()