我有以下 Pandas 数据框:
data ={'Studentid'['SSmith','SSmith','SSmith','SSmith','PPeters','PPeters','PPeters'],
'LastName':['Smith','Smith','Smith','Smith','Peters','Peters','Peters'],
'FirstName':['S','S','S','S','P','P','P'],
'year':[2012,2013,2014,2014,2015,2015,2015],
'month':[11,7,1,2,10,11,12],
'BookLevel':[1.4,1.5,2.5,3.8,3.0,3.8,3.7],
'BookProgress':[0.0, 0.1, 1.1, 2.4, 0.0, 0.8, 0.7],
'DateProgress':[0.0, .68, 1.21, 1.29, .04, .12, .18],
'PlusMinus':[0.0, -.58, -.11, 1.11, -.04, .68, .52]}
我正在尝试为史密斯和彼得斯创建单独的情节。我尝试了很多替代方案,最接近的是以下代码:
x=[(df['DateProgress'])]
y=[(df['BookProgress'])]
for i, group in df.groupby("Studentid"):
plt.figure()
plt.scatter(x,y)
plt.plot(range(4))
plt.xlim(-.5, 3.5)
plt.ylim(-.5, 3.5)
plt.xlabel('DateProgress')
plt.ylabel('BookProgress')
plt.gca().set_aspect('equal', adjustable='box')
plt.show()
结果是两个独立的图,但它们是相同的,并且都包含 Smith 和 Peters 的所有数据点。我很惊讶我能够得到两个地 block ——尽管它们不是我想要的地 block 。我不知道如何获得我正在寻找的东西...这是史密斯的一个图,有 4 个数据点,而彼得斯的另一个图有 3 个数据点。感谢任何帮助
最佳答案
未经测试。您已经非常接近了,您只需为每个组重新定义 x
和 y
即可。
--piRSquared(现已测试)...它有效。
for i, group in df.groupby("Studentid"):
plt.figure()
x=group['DateProgress']
y=group['BookProgress']
plt.scatter(x,y)
plt.plot(range(4))
plt.xlim(-.5, 3.5)
plt.ylim(-.5, 3.5)
plt.xlabel('DateProgress')
plt.ylabel('BookProgress')
plt.gca().set_aspect('equal', adjustable='box')
plt.title(i) #Label each plot
plt.show()
我只是想提一下,如果您同意在同一轴上以不同颜色绘制两个图,则可以使用更优雅的方法:http://pandas.pydata.org/pandas-docs/stable/visualization.html
关于python - 从 Pandas 数据框创建多个图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752265/