【问题标题】:multiple lines in animated python line plot动画python线图中的多条线
【发布时间】:2021-01-09 23:51:38
【问题描述】:

因此,我尝试在同一张图表中使用动画线为人均 GDP 和预期寿命设置动画。 我的代码是

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
import matplotlib.animation as animation

data= pd.read_csv("data.csv")
print (data.head())
data_2007=data[data.year==2007]
print (data_2007.head())
china=data[data.country=="China"]


x_data=[]
y_data=[]
y1_data=[]
fig, ax = plt.subplots()
ax.set_xlim(1950,2010)
line, = ax.plot(0,0)

def animation_frame(i):
    x_data.append(china.year.iloc[i])
    y_data.append(china.lifeExpectancy.iloc[i])
    y1_data.append(china.gdpPerCapita.iloc[i])

    line.set_xdata(x_data)
    line.set_ydata(y_data)
    line.set_y1data(y1_data)
    return line,

animation = FuncAnimation(fig, func=animation_frame, interval=500)
plt.show()

但它在图形上不返回任何线,并返回错误

    line.set_y1data(y1_data)
AttributeError: 'Line2D' object has no attribute 'set_y1data'

知道如何解决这个问题吗?当我尝试仅绘制 X 和 Y 时,它会起作用。 提前谢谢你。

【问题讨论】:

    标签: python matplotlib animation data-visualization


    【解决方案1】:

    在您的代码中,您没有额外的 GDP 行。发生错误是因为方法set_y1data 未在行内定义。一个可能的解决方案如下:

    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from matplotlib.animation import FuncAnimation
    import matplotlib.animation as animation
    
    
    x_data=[]
    y_data=[]
    y1_data=[]
    fig, ax = plt.subplots()
    ax.set_xlim(1950,2010)
    ax.set_ylim(1950, 2100)
    
    
    
    # for the purpose of illustration
    xdata = np.linspace(1950, 2010, 50)
    ydata = 1 * xdata
    y1data = 1.01 * xdata
    
    line_1, = ax.plot(xdata[0], ydata[0])
    line_2, = ax.plot(xdata[0], y1data[0])
    
    
    def animation_frame(i):
        
        line_1.set_xdata(xdata[:i])
        line_1.set_ydata(ydata[:i])
        line_2.set_xdata(xdata[:i])
        line_2.set_ydata(y1data[:i])
        return 
    
    animation = FuncAnimation(fig, func=animation_frame, interval=500)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-24
      相关资源
      最近更新 更多