python - 分别拆分散点图的数据框
问题描述
一个简单的数据框显示了不同游戏部门中团队的数据。
我想按团队拆分这个数据框,并在他们的分数和标记上制作散点图。
在屏幕上查看绘图时似乎工作正常。但是,当它们保存为文件时。奇怪的事情发生了(兔子有 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')
什么是正确的方法?谢谢你。(顺便说一句,比“每个1 ['Score']”更好的方法是什么?)
解决方案
Rabbit 在同一张图上绘制 Rabbit 数据和 Lion 数据。
我怀疑这是因为plt
在你的 for 循环中使用了相同的数字。尝试plt.figure()
在循环的入口处添加,然后plt.close()
在循环的出口(即结束)处添加,以每次 for
创建和关闭一个新的。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()
推荐阅读
- javascript - ESLint yoda 忽略未定义的比较,如 foo === undefined
- javascript - Javascript Canvas 触摸事件
- python - Python SMTPAuthnticationError
- php - 如何在 Google 图表中回显?
- r - 如何在 R 中绘制标准正态 CDF?
- macros - 数据透视表的 MACRO 调试
- java - 不使用 Java 数学类的数学运算
- android - Android Flavor 特定依赖树
- c++ - 如何将自定义特征张量类存储到 std::vector 中?
- python - 创建范围以从 Databricks 访问 Azure Datalake Gen2 时出现属性错误