2016-11-19 2 views
0

Я работаю над программой о солитоне, проходящем через барьер, и я пытаюсь заставить барьер выглядеть как настоящий, так сказать, из кирпичей. Проблема в том, что я не мог найти, как построить «кирпичную» текстуру. Я использую fill_between(), но если есть другой вариант, допускающий кирпичи, у меня не будет проблем с его использованием.Кирпичная стена с matplotlib

Мой код:

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

Если вы можете найти подходящее изображение ... [Этот пример] (http://matplotlib.org/examples/pylab_examples/demo_annotation_box.html#pylab-examples-example-code-demo-annotation-box-py) отображает изображение, размещенное на графике. – wwii

ответ

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

+0

Спасибо! Это сработало отлично! И теперь это выглядит намного лучше! – Nana20

 Смежные вопросы

  • Нет связанных вопросов^_^