Python 修改matplotlib中的子批次
我是matplotlib的初学者。 我正在尝试绘制各种子情节,并从中生成动画。 手头的问题-Python 修改matplotlib中的子批次,python,pandas,dataframe,matplotlib,Python,Pandas,Dataframe,Matplotlib,我是matplotlib的初学者。 我正在尝试绘制各种子情节,并从中生成动画。 手头的问题- 我试图通过查看几个在线示例来为每个图表添加标签,但没有成功。我还提供了一个图例,但它仅显示在最后一个子图中 我想让绘图更具交互性,比如当我将光标移到绘图上时,它会显示x,y坐标 请建议如何继续制作动画 当我使用pandas dataframe时,有一些方法可以直接绘制图形,但我可以继续研究如何设置它们的动画。请随时提出另一种方法 这是我正在使用的数据- Unnamed: 0 No. of 0r
Unnamed: 0 No. of 0runs No. of 1run No. of 2runs No. of 3runs No. of 4runs No. of 5runs No. of 6runs Seasons
0 0 5279 4654 729 39 1702 6 622 1
1 1 5422 4861 994 60 1320 3 508 2
2 2 5330 5410 910 50 1709 3 587 3
3 3 6675 6203 1021 50 1913 7 639 4
4 4 7092 6839 1113 58 1911 8 731 5
5 5 7294 6589 1179 71 2053 5 681 6
6 6 5361 5190 1009 56 1563 5 715 7
7 7 5043 4928 880 46 1611 1 692 8
8 8 4908 5434 1007 43 1632 4 639 9
这是我的密码-
axs=[0,1,2,3,4,5,6]
f, axs = plt.subplots(7,figsize=(10,10))
x = seas
axs[0].plot(x, df_of_topruns['No. of 0runs'],c='b',label='No. of zero runs scored in season')
axs[1].plot(x, df_of_topruns['No. of 1run'],c='r',label='No. of one run scored in season')
axs[2].plot(x, df_of_topruns['No. of 2runs'],c='yellow',label='No. of two runs scored in season')
axs[3].plot(x, df_of_topruns['No. of 3runs'],c='orange',label='No. of three runs scored in season')
axs[4].plot(x, df_of_topruns['No. of 4runs'],c='black',label='No. of four runs scored in season')
axs[5].plot(x, df_of_topruns['No. of 5runs'],c='grey',label='No. of five runs scored in season')
axs[6].plot(x, df_of_topruns['No. of 6runs'],c='g',label='No. of six runs scored in season')
作为动画的一种基本形式,动画函数是通过重复动画函数中的x轴数来创建的,以获得数据帧的值。请参阅。对于交互式功能,我建议使用另一个live reilly,如plotly
import pandas as pd
import numpy as np
import io
data = '''
"No. of 0runs" "No. of 1run" "No. of 2runs" "No. of 3runs" "No. of 4runs" "No. of 5runs" "No. of 6runs" Seasons
0 5279 4654 729 39 1702 6 622 1
1 5422 4861 994 60 1320 3 508 2
2 5330 5410 910 50 1709 3 587 3
3 6675 6203 1021 50 1913 7 639 4
4 7092 6839 1113 58 1911 8 731 5
5 7294 6589 1179 71 2053 5 681 6
6 5361 5190 1009 56 1563 5 715 7
7 5043 4928 880 46 1611 1 692 8
8 4908 5434 1007 43 1632 4 639 9
'''
df = pd.read_csv(io.StringIO(data), sep='\s+')
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from matplotlib.animation import PillowWriter
axs=[0,1,2,3,4,5,6]
fig, axs = plt.subplots(7,figsize=(10,10))
labels = df.columns[:-1].tolist()
x = df['Seasons'].tolist()
colors = ['b','r','y','orange','k','grey','g']
# for i,l in enumerate(labels):
# axs[i].plot(x, df[l],c=colors[i],label=l+' scored in season')
# axs[i].set_title(l)
# axs[i].legend(loc='best')
fig.subplots_adjust(hspace=1.0)
def animate(i):
for k, l in enumerate(labels):
axs[k].plot(x[0:i+1], df.loc[0:i, l], c=colors[k],
label=l+' scored in season')
axs[k].set_title(l+' scored in season')
# axs[k].legend(loc='best')
anim = FuncAnimation(fig, animate, frames=9, repeat=False)
# anim.save('subplots_ani.gif', writer='pillow')
plt.show()
我知道你指定了MatpTLIB,但是你可以考虑用类似的方式来表达。我试过你的代码,但是图是空的。有没有关于我可能在哪里犯了错误的建议/你尝试了从数据到代码结尾的所有方法?我找到了答案。我给的名单上的名字比我给的名字都错了。我的错,图表移动了吗?如果它移动了,请接受答案。图形没有移动。我一直在想办法,但到目前为止还做不到。任何建议。但其余的作品都是精细的,副插图印刷得很精确