一个简单的数据框显示了部门中不同游戏团队的数据。
我想按团队划分此数据框,并在其得分和标记上绘制散点图。
在屏幕上查看绘图时,似乎工作正常。但是,将它们另存为文件时。发生了奇怪的事情(兔子有6个点而不是3个点)。
import pandas as pd
import matplotlib.pyplot as plt
df = pd.DataFrame({'Department':['Buy','Buy', 'Trade', 'Trade', 'Trade', 'Buy'],
'Team':['Lion','Lion','Rabbit','Rabbit','Rabbit','Lion'],
'Game':['a352','a425','a845','a846','a235','a526'],
'Score':[7,8,9,4,2,3],
'Mark':[1,3,5,7,1,2]}, columns = ['Department','Team','Game','Score','Mark'])
for each in df.groupby('Team'):
plt.scatter(each[1]['Score'], each[1]['Mark'])
plt.savefig('C:\\' + str(each[0]) + '.png')
正确的方法是什么?谢谢。 (顺便说一句,还有什么比“ each 1 ['Score']”更好的方法了?)
答案 0 :(得分:1)
兔子在同一图形上绘制Rabbit数据和Lion数据。
我怀疑是因为plt
在for循环中使用了相同的数字。尝试在循环的开头添加plt.figure()
,然后在for
循环的出口(即末尾)添加plt.close()
,以每次创建并关闭新的figure
。
赞:
for each in df.groupby('Team'):
plt.figure()
plt.scatter(each[1]['Score'], each[1]['Mark'])
plt.savefig('C:\\' + str(each[0]) + '.png')
plt.close()