我正在制作一个关于穿过障碍物的孤子的程序,我正试图让障碍看起来像一个真正的障碍,所以说,用砖砌成。问题是我找不到如何绘制'砖'纹理。我使用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')
所有数组都定义得很好。运行程序时代码没有问题,但我想知道如果可能的话如何绘制砖块。
我附上了实际情况的图像,等待用砖建造的屏障是空的,以使其更具视觉效果。
先谢谢了!
答案 0 :(得分:3)
这是一个关于如何将砖墙放入图像的示例
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()