在Python中绘制多年的多个散点图

时间:2018-11-06 22:01:57

标签: python python-3.x pandas dataframe matplotlib

我有一个看起来像这样的数据框:

Date            Faculty         Target        Avg
2012-01-01       Arts             80           60
2012-01-01       Science          70           60
2012-02-01       Arts             91           89
2012-02-01       Gym              80           89
.
.
2012-07-01       Arts             83           67
2012-07-01       Science          72           67
2012-08-01       Arts             81           83
2012-08-01       Science          70           83

我想在一个散点图上绘制所有教师,并使用各自的 Target 值(Y轴)和 Avg 值(X轴)。

我正在尝试使用(伪代码)散点图,例如:

ax1 = data.plot(kind='scatter', x='Avg', y='Target(Arts)', color='r', label='Arts')    
ax2 = data.plot(kind='scatter', x='Avg', y='Target(Science)', color='g', ax=ax1, label='Science') 
ax3 = data.plot(kind='scatter', x='Avg', y='Target(Gym)', color='b', ax=ax1, label='Gym')

我希望每个目标值(用不同的颜色标记)都在同一个图上的所有系(总共28个),但是太多了,无法手动使用loc输入(或者至少我想避免这种情况)。我无法使用iloc来按索引进行计数,因为每个日期的教职员工人数各不相同。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以groupby Faculty,并遍历各组,并绘制每个组:

g = df.groupby('Faculty')

for faculty, data in g:
    plt.scatter(data['Avg'], data['Target'], label=faculty)

plt.xlabel('Avg')
plt.ylabel('Target')
plt.legend()
plt.show()

enter image description here

相关问题