分别为散点图拆分数据帧

时间:2019-04-17 07:06:36

标签: python dataframe matplotlib

一个简单的数据框显示了部门中不同游戏团队的数据。

我想按团队划分此数据框,并在其得分和标记上绘制散点图。

enter image description here

在屏幕上查看绘图时,似乎工作正常。但是,将它们另存为文件时。发生了奇怪的事情(兔子有6个点而不是3个点)。

enter image description here

enter image description here

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']”更好的方法了?)

1 个答案:

答案 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()