2017-01-30 8 views
1

Я определил следующую анимацию в Julia, используя matplotlib. Анимация перемещает видимую область вдоль синей линии слева направо. Я поместил несколько текстовых элементов вдоль синей линии. Я хотел бы сделать их видимыми, как только они появятся в поле зрения (в соответствии с ограничениями по осям). Однако, поскольку вы можете видеть, что текстовые элементы видны на белой области вне осей, прежде чем они перемещаются в фактические оси. Как я могу это предотвратить?Сохранять текст внутри осей во время анимации в Julia/matplotlib

using PyPlot, PyCall 
@pyimport matplotlib.animation as animation 


# define initial plot 
fig = figure(facecolor="white") 
ax = gca() 
ax[:set_ylim](-1,+1) 


plot([-10,10],[0,0],"b-*",linewidth=2.0) 
for i = -10:2:10 
    text(i,0.3,"$(i)",fontsize=30) 
end 


xdata = -10:0.1:10 
# use animate function to change xlim 
function animate(k) 
    k+=1 
    # change axis limits 
    lim = ax[:set_xlim](xdata[k]-1,xdata[k]+1) 
    return (lim,nothing) 
end 
numMaxFrames = length(xdata) 
anim = animation.FuncAnimation(fig, animate, frames=numMaxFrames, interval=50,repeat=true) 

Пример: 10 находится за пределами осей enter image description here

+0

Параметр '10' является там, потому что вы программируете его там: 'text (10,0.3," 10 ")' помещает текст в позицию (10, 0.3). Из вашего вопроса не становится ясно, что вы хотели бы иметь вместо этого. Поэтому, пожалуйста, отредактируйте его соответствующим образом, четко указав ожидаемое поведение. – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest Я редактировал вопрос. Надеюсь, это более понятно. – miga89

+0

Итак, в приведенном выше графике вы хотели бы, чтобы '10' вообще не был виден или у него было другое место? – ImportanceOfBeingErnest

ответ

1

Я решил проблему с помощью установки параметра clip_on при определении текстовых элементов:

text(i,0.3,"$(i)",fontsize=30,clip_on=true)