有matplotlib的砖墙

时间:2016-11-19 20:40:25

标签: python matplotlib textures

我正在制作一个关于穿过障碍物的孤子的程序,我正试图让障碍看起来像一个真正的障碍,所以说,用砖砌成。问题是我找不到如何绘制'砖'纹理。我使用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')

所有数组都定义得很好。运行程序时代码没有问题,但我想知道如果可能的话如何绘制砖块。

我附上了实际情况的图像,等待用砖建造的屏障是空的,以使其更具视觉效果。

先谢谢了!

Image of the plot

1 个答案:

答案 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()

enter image description here