我正在尝试设置一条垂直线和一个散点和圆的动画。我可以让散点和圆工作,但垂直线不行。如果可能的话,我也希望垂直线不在圆的半径之外绘制。不过,我可以继续跟进
我将注释掉animate
中与该行相关的函数,使其运行。但是当应用动画线条时,它不起作用
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
fig, ax = plt.subplots(figsize = (8,8))
ax.set_xlim(-20,20)
ax.set_ylim(-20,20)
ax.grid(False)
df = pd.DataFrame({
'Time' : [1,1,1,1,2,2,2,2,3,3,3,3],
'X2' : [0,0,0,0,-1,-1,-1,-1,0,0,0,0],
'Y2' : [0,0,0,0,1,1,1,1,1,1,1,1],
})
moving_x = np.array(df.groupby(['Time'])['X2'].apply(list))
moving_y = np.array(df.groupby(['Time'])['Y2'].apply(list))
# scatter moving
moving_point = ax.scatter(moving_x[0], moving_y[0], c = 'black', marker = 'x')
# Array of immediate congestion radius coordinates
radius = df.drop_duplicates(subset = ['Time','X2', 'Y2'])[['X2', 'Y2']].values
# Plot immediate congestion radius
circle = plt.Circle(radius[0], 10, color = 'black', fill = False)
# Add radius to plot
ax.add_patch(circle)
t = df.drop_duplicates(subset = ['Time','X2'])[['X2']].values
line1 = ax.axvline(t[0], ls = '--', color = 'black', lw = 1, zorder = 10)
def animate(i) :
circle.center = (radius[i,0], radius[i,1])
# Animate vertical line
#line1.set_data([i, i],[0,t])
moving_point.set_offsets(np.c_[moving_x[0+i], moving_y[0+i]])
ani = animation.FuncAnimation(fig, animate, np.arange(0,2), blit = False)
您希望设置
blit=True
,这样就不必重新绘制东西,因为轴没有改变。我还避免使用axvline
,如下所示:相关问题 更多 >
编程相关推荐