Я строю простой точечный график (ожидаемая продолжительность жизни x ВВП на душу населения), который считывает данные из файла xls.Вот код:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
#ler a terceira sheet da planilha
data = pd.read_excel('sample.xls', sheet_name=0)
data.head()
plt.scatter(x = data['LifeExpec'],
y = data['GDPperCapita'],
s = data['PopX1000'],
c = data['PopX1000'],
cmap=cm.viridis,
edgecolors = 'none',
alpha = 0.7)
for state in range(len(data['State'])):
plt.text(x = data['LifeExpec'][state],
y = data['GDPperCapita'][state],
s = data['State'][state],
fontsize = 14)
plt.colorbar()
plt.show()
Файл xls: 
Сюжет: 
Теперь я хочу добавить в этот файл xls некоторые данные из других лет и анимировать пузырьки, чтобы они перемещались и меняли размеры в соответствии с ВВП и численностью населения каждого года.В глупой попытке сделать это я изменил код так:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import mplcursors
from matplotlib.animation import FuncAnimation
data = pd.read_excel('sample.xls', sheet_name=0)
data.head()
uniqueYears = data['Year'].unique()
fig, ax = plt.subplots()
def animate(i):
for i in uniqueYears:
ax.scatter(x = data['lifeExpec'],
y = data['GDPperCapita'],
s = data['PopX1000']/4,
c = data['Region'].astype('category').cat.codes,
cmap=cm.viridis,
edgecolors = 'none',
alpha = 0.7)
anim = FuncAnimation(fig, animate)
for state in range(len(data['State'])):
plt.text(x = data['lifeExpec'][state],
y = data['GDPperCapita'][state],
s = data['State'][state],
fontsize = 10,
ha = 'center',
va = 'center')
mplcursors.cursor(hover=True)
plt.draw()
plt.show()
Я подумал, что, возможно, способ сделать это - использовать функцию animate для построения диаграммы несколько раз, одинитерация в год.Но я не мог понять, как «фильтровать» строки, относящиеся к этому конкретному году.
Я слишком выключен?Можно ли даже добиться с помощью matplotlib?