2017-01-30 1 views
1

Ich definierte die folgende Animation in Julia mit Matplotlib. Die Animation bewegt den sichtbaren Bereich entlang der blauen Linie von links nach rechts. Ich habe mehrere Textelemente entlang der blauen Linie platziert. Ich möchte sie sichtbar machen, sobald sie im Sichtfeld erscheinen (wie durch die Achsengrenzen vorgegeben). Wie Sie jedoch sehen können, sind die Textelemente auf dem weißen Bereich außerhalb der Achsen sichtbar, bevor sie sich in die tatsächlichen Achsen bewegen. Wie kann ich das verhindern?Behalten Sie Text innerhalb der Achsen während der Animation in 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) 

Beispiel: 10 liegt außerhalb der Achsen enter image description here

+0

Die '10' ist da, weil du es dort programmierst: 'text (10,0.3," 10 ")' plaziert den Text an Position (10, 0.3). Aus Ihrer Frage wird nicht klar, was Sie stattdessen haben möchten. Also editieren Sie es bitte entsprechend und geben Sie das erwartete Verhalten an. – ImportanceOfBeingErnest

+0

@ImportanceOfBeingErnest Ich habe die Frage bearbeitet. Ich hoffe, das ist verständlicher. – miga89

+0

Also in der obigen Handlung, möchten Sie die '10' überhaupt nicht sichtbar haben, oder haben Sie es an einer anderen Position? – ImportanceOfBeingErnest

Antwort

1

I, das Problem durch Einstellen der Option clip_on gelöst, wenn die Textelemente definieren:

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